배열 메서드는 callback함수로 사용할때 가장 많이 사용된다.
const arr = [0,1,2,3,4,5]; arr.forEach(function(element){ console.log(element); // 0 1 2 3 4 5 }); // 혹은 arrow 함수 가능 arr.forEach(element => console.log(element));
배열로 만들어낸다.const arr = [0,1,2,3]; let squaredArr = arr.map(function(element){ return element * element; }); // 혹은 arrow 함수 가능 squaredArr = arr.map(element => element * element); console.log(squaredArr); // [ 0, 1, 4, 9 ]
map()과 forEach()는
공통적으로
아래의 세 개의 인자로 호출된다.
1. currentValue (배열 원소의 값)
2. index (현재 요소의 인덱스)
3. array (현재 배열)
map()은 배열 내의 모든 요소 각각에 대하여 주어진 함수(콜백)를 호출한 결과를 모아 새로운 배열을 반환한다는 특징을 가지고 있다.//forEach// let arr = [1, 2, 3, 4, 5]; arr.forEach((num, index) => { return (arr[index] = num * 2); }); // arr = [2, 4, 6, 8, 10] // //Map// let double = arr.map(num => { return num * 2; }); // doubled = [2, 4, 6, 8, 10]
정리
- forEach()으로 할 수 있는 것은 map()으로도 가능하고 그 반대도 가능하다.
- map()은 메모리를 할당하고 리턴 값을 저장한다. forEach()는 리턴 값을 버리고 항상 undefined를 리턴한다.
- forEach()는 콜백함수로 현재 Array를 변환할 수 있다. 대신에 map()은 새로운 Array를 리턴한다.