알고리즘을 공부하다가 forEach와 map의 차이점이 궁금해져서 알아보았습니다.
forEach
forEach():
일반적인 forEach문
arr.forEach(function(v, i, arr) {
console.log(v);
});
let a = [1,2,3,4,5]
let b = a.forEach((n)=>{
String(n)
})
console.log(b) // undefiend
let a = [1,2,3,4,5]
let b = a.forEach((n)=>{
if(n === 2){
a.shift()
}
})
console.log(a) // [2,3,4,5]
1이 없어진것을 볼 수 있다.
var arr = ["a", "b", "c", "d"];
arr.forEach(letter => {
console.log(letter);
});
// a
// b
// c
// d
Map
map():
const newArr = arr.map(function(v, i, arr) {
return condition;
});
let arr = [1, 2, 3, 4, 5];
let newArr = arr.map(function(v, i, arr) {
return v*2;
});
// 2, 4, 6, 8, 10
var arr = [1, 2, 3, 4, 5];
var arr2 = arr.map(num => num * 2).filter(num => num > 5);
// arr2 = [6, 8, 10]
결론 - 차이점
map()과 forEach()와 다른점은
map은 메모리를 할당하고 리턴 값을 저장하여 Array와 동일한 사이즈의 새로운 Array을 반환한다.
forEach는 리턴 값을 버리고 항상 undefined를 리턴한다.
forEach()는 콜백함수로 호출한 Array를 변환할 수 있으며, map()은 새로운 Array를 리턴한다.