JavaScript
-
생성자 함수JavaScript 2022. 9. 30. 02:09
1. new 함수명(); 을 실행하면 2. this = {} : 빈 객체를 만들고 this에 할당 (실제로 이 줄은 코드에 없음) 3. this = {} 에 할당될 프로퍼티들 // this.name = name; // this.age = age; // this에 property 추가 4. return this; // 마지막으로 this 를 반환 // 실제로 이 줄은 코드에 없음 이렇게 쓰는 이유 : 일일이 객체 리터럴을 쓰는 것보다 빠르고 일관성도 있다. 생성자 함수에 this ={} 가 생략되어 있으며, this.프로퍼티이름 이 모두 저 생략된 코드줄에 들어간다는 것을.... 이걸 말이야, 진작에 알려줬어야지. 저것만 알려줬으면 이해가 바로 될텐데. function User(name, age){ // ..
-
문자열과 숫자에 접근하는 방법들3 : 정규표현식JavaScript 2022. 9. 28. 22:56
function solution(phone_number) { var answer = ''; answer = phone_number.slice(0,-4).replace(/[0-9]/gi,'*') + phone_number.slice(-4); return answer; } //let phone_number = "01033334444" //"*******4444" 출력 //앞에서부터 뒤에서 4자리 전까지 자르고, *로 replace 하고, 뒤 4자리 다시 잘라서 붙임. 기초적인 사례. 플래그가 무엇인지도 몰랐기 때문에, 굳이 i 플래그도 써놓은 모습이다. function hide_numbers(s) { return s.replace(/\d(?=\d{4})/g, "*"); } // 아래는 테스트로 출력해 보기 ..
-
문자열과 숫자에 접근하는 방법들 2 : sort()JavaScript 2022. 9. 28. 19:14
sort( ) 는 만만해보이지만 정말이지 어려운 메서드이다. let strings = ["sun", "bed", "car"] let n = 1 console.log( strings.sort().sort((a,b) => a.charCodeAt(n) - b.charCodeAt(n)) ) // [ 'car', 'bed', 'sun' ] 1번째 인덱스의 문자 기준으로 sort 오름차순 정렬. 문자를 빼기 위해 유니코드 변환을 했다. let s = "Zbcdefg" let n = [...s] console.log(n) / ['Z', 'b', 'c','d', 'e', 'f','g'] console.log( n.sort((a,b) => b.charCodeAt(0)-a.charCodeAt(0)).join('') ) /..
-
배열에 접근하는 방법들2 : set(), map(), 배열의 중복제거JavaScript 2022. 9. 28. 18:52
배열에서 중복 없애기 : 조건문 노가다, set, filter 등 let arr = [1,1,3,3,3,0,0,1,1,1,1] function solution(arr) { let array = []; for(let i=0; i val != arr[index+1]); } set 은 순서에 상관 없이, 중복된 것을 배열에 담지 않는다. "Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다." 라는 것이 mdn 문서의 표현이다. // foreach 로 돌리면서 검사 arr = ['Seoul','Busan','Jeju'] let isExistEoul = false; arr.forEach(item => { if (item=='Seoul') isExistSeoul = tru..
-
조건을 거는 방법들 1 : while, do while 등JavaScript 2022. 9. 28. 18:36
while 조건을 거꾸로 생각하기 쉽다. let num = 1 function solution(num) { if (num === 1){ return 0; }else{ let nom = num let count = 0 do { nom%2 === 0 ? nom/=2 : nom = nom*3 + 1; count+=1; if (count>=500){return -1}; // break 같은 거 안써도 되나? } while (nom!==1); // 내가 정반대로 구문을 알고 있었다. return count; } } console.log(solution(num)) // 0이 출력된다. num에 1 넣어놨잖아. function collatz(num) { var answer = 0; while(num !=1 && an..
-
문자열과 숫자에 접근하는 방법들 1 : +, isNan() 등JavaScript 2022. 9. 28. 17:29
더하기 연산자를 활용하는 방법 let s = "97 75 88 99 95 92 73"; let list = s.split(' ').map((el)=>+(el)); // 문자열을 공백 기준으로 나누어 배열을 만들고, 각 요소를 숫자로 바꾼다. const list = s.split(' ').map(Number) // let list = s.split(' ').map((el)=>+(el)); // 사실상 같은 코드이다. console.log(list) //[97, 75, 88, 99, 95, 92, 73] // 숫자로 된 배열 console.log(...list) // 97 75 88 99 95 92 73 // 그마저 스프레드 하면 숫자만 나온다. +를 앞에 붙이면 모두 숫자가 될 것만 같으나, 그렇지 않다...
-
배열에 접근하는 방법들 1 : forEach(), filterJavaScript 2022. 9. 28. 16:51
Array.prototype.forEach() 먼저 기억할 점은, forEach()는 메서드 체인에서 중간이 아니라 끝에 사용해야 한다는 것이다. 예컨대 map()이나 reduce()는 자신의 콜백을 적용할 수 없는 요소는 아예 명령으르 수행하지 않아 undefined가 반환되지 않는다. 그러나 forEach는 undefined를 반환한다. 메서드 체인 끝에서 side effect를 구현하는 용도로 활용하는 것이 적합하다. MDN 예시 : 화살표 형태 const array1 = ['a', 'b', 'c']; array1.forEach(element => console.log(element)); // expected output: "a" // expected output: "b" // expected ou..
-
set()JavaScript/입 속의 검은 잎 2022. 9. 28. 13:42
//기존배열 let arr = []; arr.push(1); arr.push(5); arr.push(5); console.log(arr) // [ 1, 5, 5 ] let set1 = new Set() set1.add(1) set1.add(5) set1.add(5) console.log(set1) // Set(2) { 1, 5 } // foreach 로 돌리면서 검사 arr = ['Seoul','Busan','Jeju'] let isExistEoul = false; arr.forEach(item => { if (item=='Seoul') isExistSeoul = true; }) //set의 내장함수로 검사 let arr2 = new Set(arr) console.log(arr2.has('Seoul'))..