이채현
배열 중복값 개수 구하기
reduce()
reduce() 함수는, 배열의 값을 순회하면서 배열의 값을 특정 형태로 누적하는데 사용합니다.
1 2 3 4 5 6 7 8 9 10
| const inputNum = [1, 1, 2, 3, 4, 2, 1];
const result1 = inputNum.reduce((obj, t) => (obj[t] = obj[t] ? obj[t] + 1 : 1, obj), {});
const result2 = inputNum.reduce((obj, t) => { obj[t] = (obj[t] || 0) + 1; return obj; }, {});
|
forEach()
1 2 3
| const cnt = {} inputNum.forEach((x) => (cnt[x] ? (cnt[x] += 1) : (cnt[x] = 1)));
|
forEach의 callback함수를 풀어쓰면 아래와 같다.
1 2 3 4 5
| if(cnt[x]) { cnt[x] = cnt[x] + 1; } else { cnt[x] = 1; }
|
즉, 처음에 배열의 첫 번째 값인 ‘1’이 들어오면, cnt[x] (cnt.1)은 undefined이다.
cnt[x]가 undefinded이므로 cnt에 key ‘1’를 추가하고 value 1을 세팅해준다.
이후 다시 ‘1’이 들어오면 cnt[1]은 존재하므로, cnt[1]값 1에 1을 더해준다.
배열에 1 ~ N 값 세팅하기
기본 반복문을 이용
1 2 3 4 5 6 7 8 9 10 11
| const arr = []; const N = 10;
for (let i = 1; i <= N; i++) { arr.push(i); }
console.log(arr);
|
1 2 3
| const arr = Array.from(Array(N).keys()); console.log(arr);
|
Spread를 이용한 방법
1 2 3
| const arr = [...Array(10).keys()]; console.log(arr);
|
1부터 시작하기 위해 from과 length property 이용
1 2 3
| const arr = Array.from({length: 10}, (_, i) => i + 1) console.log(arr);
|
단순 원하는 길이만큼 0으로 채우기
1 2
| const array = new Array(10001).fill(0); console.log(array)
|