배열 내 모든 요소를 순회하면서 콜백함수를 반복 호출한다는 공통점이 있는 배열 메소드 4개를 정리해보았습니다. 필요할 때 그 메소드를 써야지 생각이 났으면 좋겠는데 잘 떠오르지가 않더라구요.
이번 기회에 잘 정리해두고 어떤 상황에서 특정 메소드를 사용하는게 좋을지 정리해봅니다.
true
인 요소로만 구성된 새로운 배열을 반환한다.const numbers = [1, 2, 3, 4, 5];
const odds = numbers.filter(item => item % 2);
console.log(odds); // [1, 3, 5]
const number = [1, 1, 2, 2, 3, 4, 5];
let arr = number.filter((item, index) =>
number.indexOf(item) === index
);
console.log(arr); // [ 1, 2, 3, 4, 5 ]
let arr1 = [1, 2, 3, 4];
let arr2 = [1, 2, 5, 6, 7];
let arr3 = arr1.filter(item => arr2.includes(item));
console.log(arr3); // [1, 2]
새로운 배열
을 반환한다.const numbers = [1, 4, 9];
const roots = numbers.map(item => Math.sqrt(item));
console.log(roots); // [1, 2, 3]
1:1 매핑
되어 같은 length값을 가진다. 콜백함수
, 두 번째 인수로 초기값
을 전달받는다.함수들의 결과가 누적되어 저장
되는 '누산기(accumulator)'라고 생각하면 된다. 마지막 함수까지 호출되면 이 값은 reduce의 반환 값이 된다.const arr = [1,2,3,4]
let sum = arr.reduce((acc, cur) => acc + cur, 0)
console.log(sum); //
const arr = [1, 2, 3, 4, 5];
const average = arr.reduce((acc, cur, index) => {
return index === arr.length - 1 ? (acc + cur) / arr.length : acc + cur
}, 0);
console.log(average); // 3
const alphabet = ['a', 'b', 'c', 'b', 'd'];
const count = alphabet.reduce((acc, cur) => {
acc[cur] = (acc[cur] || 0) + 1;
return acc;
}, {});
// 초기값인 빈 객체에 요소값인 cur을 property key로, 요소의 개수를 value로 할당한다.
console.log(count); // { a: 1, b: 2, c: 1, d: 1 }
const arr = [1, 2, 3];
const newArr = arr.forEach(item => item ** 2);
console.log(newArr); // undefined
// forEach 메소드의 반환값은 언제나 undefined다.
undefined
다. 단지 제공된 함수로 배열의 요소를 호출한다.const arr = [1, 2, 3];
const newArr = [];
const arr2 = arr.forEach(item => newArr.push(item ** 2));
console.log(newArr); // [1, 4, 9]