
오늘은 map 과 foreach 의 차이에 대해 알아볼 것이다.
먼저, 두 함수 모두 함수형 프로그래밍을 위한 메서드라고 한다.
함수형 프로그래밍은 프로그래밍 패러다임 중 하나로, 순수 함수와 보조 함수의 조합을 통해 로직 내에 존재하는 조건문과 반복문을 제거하여 복잡성을 해결하고 변수의 사용을 억제하여 상태변경을 피하려는 프로그래밍 이라고 한다.
(함수형 프로그래밍이 뭔지 궁금해 참조한 사이트)
forEach() 메서드는 배열의 각 요소에 대해 주어진 콜백 함수를 실행한다.forEach() 메서드는 내부에서 반복문을 통해 자신을 호출한 배열을 순회하면서 수행해야할 처리를 콜백 함수로 전달받아 호출한다. 아무 값도 반환하지 않는다.array.forEach(callback(currentValue [, index [, array]])[, thisArg])
array : forEach() 메서드를 호출한 배열
callback : 각 요소에 대해 실행될 콜백 함수
currentValue : 현재 처리중인 요소의 값
index : 현재 처리중인 요소의 인덱스
thisArg : 콜백함수 내에서 this 로 사용될 값, 생략될 경우 undefined 로 설정
예제
const numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(number) {
console.log(number);
});
// 출력 결과:
// 1
// 2
// 3
// 4
// 5
forEach() 메서드는 numbers 배열의 각 요소에 대해 주어진 콜백 함수를 실행한다.number 매개변수에 할당되며, 이 예제에서는 console.log() 함수를 사용하여 각 요소를 출력한다. 따라서 출력 결과는 1, 2, 3, 4, 5 이다.map() 메서드는 자신을 호출한 배열의 모든 요소를 순회하면서 인수로 전달받은 콜백 함수를 반복 호출한다.forEach 와 다른점은, map 은 콜백함수의 반환값들로 구성된 새로운 배열을 반환한다는 점이다.array.map(callback(currentValue[, index[, array]])[, thisArg])
array : map() 메서드를 호출한 배열
callback : 각 요소에 대해 실행될 콜백 함수
currentValue : 현재 처리중인 요소의 값
index : 현재 처리중인 요소의 인덱스
thisArg : 콜백함수 내에서 this로 사용될 값, 생략시 undefined
예제
const numbers = [1, 2, 3, 4, 5];
const doubledNumbers = numbers.map(function(number) {
return number * 2;
});
console.log(doubledNumbers);
// 출력 결과:
// [2, 4, 6, 8, 10]
map() 메서드는 numbers 배열의 각 요소에 대해 주어진 콜백 함수를 호출하여 새로운 배열 doubledNumbers를 생성한다.return number * 2 구문을 사용하여 처리된다. 따라서 출력 결과는 [2, 4, 6, 8, 10] 이다.map() 메서드는 새로운 배열을 만들어 반환하기 때문에, 원본 배열을 변경하지 않는다.forEach()와 map() 메서드는 모두 배열의 각 요소에 대해 주어진 콜백 함수를 실행하지만, 그 결과는 다르다.
차이점
forEach 는 주어진 콜백함수를 배열의 각 요소에 대해 한번 씩 실행한다. 이 때, 주어진 콜백함수는 어떠한 값도 반환하지 않는다.map 은 주어진 콜백함수를 배열의 각 요소에 대해 한번씩 실행하며, 이 때 주어진 콜백함수의 실행결과를 모아서 새로운 배열을 만든다.진짜최종결론.text
forEach 메서드는 단순히 반복문을 대체하기 위한 함수이며 데이터를 변경하는 것이 아니라 데이터베이스에 저장하는 작업에 유용할 수 있다.map 메서드는 새로운 배열을 반환하므로 데이터를 변경할 때 유용한 메서드이다.filter 등의 다른 메서드들과 유용하게 사용될 수 있다.forEach()는 콜백함수로 현재 Array를 변환할 수 있으며,map()은 새로운 Array를 리턴한다.