forEach
배열의 요소를 반복합니다.(공통점)
각 요소에 대해 콜백을 실행하며 값을 반환하지 않습니다.(차이점)
const a = [1, 2, 3];
const doubled = a.forEach((num, index) => {
return num*=2;
})
console.log(doubled)// doubled = undefined
map
배열의 요소를 반복합니다.(공통점)
각 요소에서 함수를 호출하여 결과로 새 배열을 작성하여 각 요소를 새 요소에 매핑합니다.(차이점)
const b = [1, 2, 3];
const doubledmap = b.map((num, index) => {
return num*=2;
})
console.log(doubledmap)// doubledmap = [2,4,6];
.forEach와 .map()의 가장 큰 차이점은 .map()이 새로운 배열을 반환한다는 것입니다.
반복의 결과를 조작한 새로운 배열이 필요하다면 .map(),
단순히 배열을 반복할 필요가 있다면, forEach가 좋은 선택입니다.
* 성능적인 측면에서 forEach가 더 우월하게 보였다.
* 하지만 실제로 결과 배열이 필요한 경우에는 오히려 map의 성능이 2배정도 좋았다.
** 값 할당 X => https://jsben.ch/459pe
** 값 할당 O => https://jsben.ch/bmnlP
여담
반복문의 성능 차이
for, map, while, forEach
순수 for문이 가장 빠른 성능을 보였다.
* 값을 할당하지 않았을 때(결과 배열이 필요없을 때)
* for에서 반복길이를 먼저 설정하는거나 내부에서 length를 계속해서 참조하는거에서는 큰 차이가 없는 정도
* forEach나 map은 성능이 매우 느린편에 속했고, map이 가장 느렸다.
* 값을 할당 했을 때(결과 배열이 필요할 때)
* forEach가 가장 느린 성능을 보였고, 그 외에 for, while, map은 모두 비슷한 성능을 보였다.
* 새로운 배열이 필요한 경우에는 map, 그 외에는 순수for문을 사용하는 것이 좋아보인다.
(forEach를 쓰는 이유는 뭘까...)
반응형
'FrontEnd > Java Script' 카테고리의 다른 글
JavaScript의 탄생부터 현재까지 역사 알아보기 (0) | 2023.06.23 |
---|---|
아직도 이거 모르니? JS 키워드 TOP 10! (0) | 2023.06.23 |
IIFE(즉시 실행 함수 표현식) (0) | 2021.01.11 |
호이스팅이란? (0) | 2021.01.11 |
this (0) | 2020.12.31 |