JS에서 Map과 ForEach의 차이점에 대한 자세한 설명
이미 JavaScript를 사용한 경험이 있다면 Array.prototype.map()
및 Array.prototype.forEach( )와 같이 겉보기에는 동일해 보이는 두 가지 메서드를 이미 알고 계실 것입니다.
그럼 이들의 차이점은 무엇인가요? Array.prototype.map()
和Array.prototype.forEach()。
那么,它们到底有什么区别呢?
定义
我们首先来看一看MDN上对Map和ForEach的定义:
-
forEach()
: 针对每一个元素执行提供的函数(executes a provided function once for each array element)。 -
map()
: 创建一个新的数组,其中每一个元素由调用数组中的每一个元素执行提供的函数得来(creates a new array with the results of calling a provided function on every element in the calling array)。
到底有什么区别呢?forEach()
方法不会返回执行结果,而是undefined
。也就是说,forEach()
会修改原来的数组。而map()
方法会得到一个新的数组并返回。
示例
下方提供了一个数组,如果我们想将其中的每一个元素翻倍,我们可以使用map
和forEach
来达到目的。
let arr = [1, 2, 3, 4, 5];
ForEach
注意,forEach是不会返回有意义的值的。
我们在回调函数中直接修改arr
的值。
arr.forEach((num, index) => { return arr[index] = num * 2;} );
执行结果如下:
// arr = [2, 4, 6, 8, 10]
Map
let doubled = arr.map(num => { return num * 2; });
执行结果如下:
// doubled = [2, 4, 6, 8, 10]
执行速度对比
jsPref是一个非常好的网站用来比较不同的JavaScript函数的执行速度。
这里是forEach()
和map()
的测试结果:
可以看到,在我到电脑上forEach()
的执行速度比map()
慢了70%。每个人的浏览器的执行结果会不一样。你可以使用下面的链接来测试一下: Map vs. forEach - jsPref。
函数式角度的理解
如果你习惯使用函数是编程,那么肯定喜欢使用map()
。因为forEach()
会改变原始的数组的值,而map()
会返回一个全新的数组,原本的数组不受到影响。
哪个更好呢?
取决于你想要做什么。
forEach
适合于你并不打算改变数据的时候,而只是想用数据做一些事情 – 比如存入数据库或则打印出来。
let arr = ['a', 'b', 'c', 'd']; arr.forEach((letter) => { console.log(letter); }); // a // b // c // d
map()
适用于你要改变数据值的时候。不仅仅在于它更快,而且返回一个新的数组。这样的优点在于你可以使用复合(composition)(map(), filter(), reduce()等组合使用)来玩出更多的花样。
let arr = [1, 2, 3, 4, 5]; let arr2 = arr.map(num => num * 2).filter(num => num > 5); // arr2 = [6, 8, 10]
我们首先使用map将每一个元素乘以2,然后紧接着筛选出那些大于5的元素。最终结果赋值给arr2
。
核心要点
- 能用
forEach()
做到的,map()
同样可以。反过来也是如此。 -
map()
会分配内存空间存储新数组并返回,forEach()
不会返回数据。 -
forEach()
允许callback
更改原始数组的元素。map()
Definition
먼저 MDN에서 Map과 ForEach의 정의를 살펴보겠습니다.아래에 배열이 제공됩니다. 배열의 각 요소를 두 배로 늘리려면
forEach()
: 제공된 각 요소에 대해 실행됩니다. 함수(각 배열 요소에 대해 제공된 함수를 한 번씩 실행합니다).- 차이점은 무엇인가요?
map()
: 호출 배열의 모든 요소에 대해 제공된 함수를 호출한 결과로 새 배열을 만듭니다.forEach()
메서드는 실행 결과를 반환하지 않지만정의되지 않음
을 반환합니다. 즉,forEach()
는 원래 배열을 수정합니다.map()
메서드는 새 배열을 가져와서 반환합니다. Example
map
및 forEach 목적을 달성합니다. <p>rrreee</p>
<h4 id="ForEach">
<a href="https://www.php.cn/course.html" target="_blank" textvalue="编程入门">ForEach</a><br>
</h4>
<p id="ForEach" style="white-space: Normal;">forEach는 의미 있는 값을 반환하지 않습니다. </p>🎜콜백 함수에서 <code>arr
값을 직접 수정합니다. 🎜rrreee🎜실행 결과는 다음과 같습니다. 🎜rrreee🎜Map🎜
rrreee🎜실행 결과는 다음과 같습니다. 🎜rrreee🎜실행 속도 비교 🎜
🎜🎜jsPref🎜는 다양한 JavaScript 기능의 실행 속도를 비교할 수 있는 매우 좋은 웹사이트입니다. 🎜🎜다음은forEach()
및 map()
의 테스트 결과입니다. 🎜🎜
forEach()
실행 속도를 볼 수 있어요 70 map()
보다 % 느립니다. 모든 브라우저의 실행 결과는 다를 수 있습니다. 다음 링크를 사용하여 테스트할 수 있습니다. Map vs. forEach - jsPref 🎜. 🎜기능적 관점으로 이해하기
🎜프로그래밍에 함수를 사용하는 데 익숙하신 분이라면, 그렇다면map()
을 사용하는 것이 좋습니다. forEach()
는 원래 배열의 값을 변경하고 map()
은 새로운 배열을 반환하므로 원본 배열은 영향을 받지 않습니다. 🎜어느 것이 더 좋나요?
🎜무엇을 하고 싶은지에 따라 다릅니다. 🎜🎜forEach
는 데이터를 변경할 계획은 없지만 데이터베이스에 저장하거나 인쇄하는 등 데이터로 작업을 수행하려는 경우에 적합합니다. 🎜rrreee🎜map()
은 데이터 값을 변경하고 싶을 때 적합합니다. 속도가 더 빠를 뿐만 아니라 새 배열을 반환합니다. 이것의 장점은 구성(map(), filter(), Reduce() 등의 조합)을 사용하여 더 많은 트릭을 만들 수 있다는 것입니다. 🎜rrreee🎜먼저 맵을 사용하여 각 요소에 2를 곱한 다음 5보다 큰 요소를 필터링합니다. 최종 결과는
arr2
에 할당됩니다. 🎜핵심 포인트
-
forEach()
,map()
로 수행할 수 있는 작업 사용됩니다. 그 반대도 마찬가지입니다. 🎜 -
map()
은 새 배열을 저장하기 위해 메모리 공간을 할당하고 이를 반환하며,forEach()
는 데이터를 반환하지 않습니다. 🎜 -
forEach()
를 사용하면콜백
이 원래 배열의 요소를 변경할 수 있습니다.map()
은 새 배열을 반환합니다. 🎜🎜🎜🎜🎜관련 무료 학습 권장사항: 🎜🎜🎜js 비디오 튜토리얼🎜🎜🎜🎜🎜더 많은 프로그래밍 관련 지식을 보려면 다음을 방문하세요: 🎜프로그래밍 소개🎜! ! 🎜
위 내용은 JS에서 Map과 ForEach의 차이점에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 소개: 인터넷의 대중화와 기술의 발전으로 점점 더 많은 레스토랑에서 온라인 주문 서비스를 제공하기 시작했습니다. 실시간 온라인 주문 시스템을 구현하기 위해 JavaScript 및 WebSocket 기술을 사용할 수 있습니다. WebSocket은 TCP 프로토콜을 기반으로 하는 전이중 통신 프로토콜로 클라이언트와 서버 간의 실시간 양방향 통신을 실현할 수 있습니다. 실시간 온라인 주문 시스템에서는 사용자가 요리를 선택하고 주문을 하면

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

이 기사에서는 키 값을 뒤집은 후 PHP가 배열을 반환하는 방법을 자세히 설명합니다. 편집자는 이것이 매우 실용적이라고 생각하므로 이 기사를 읽고 뭔가를 얻을 수 있기를 바랍니다. PHP 키 값 뒤집기 배열 키 값 뒤집기는 배열의 키와 값을 교환하여 원래 키를 값으로, 원래 값을 키로 사용하여 새 배열을 생성하는 배열 작업입니다. 구현 방법 PHP에서는 다음 방법을 통해 배열의 키-값 뒤집기를 수행할 수 있습니다. array_flip() 함수: array_flip() 함수는 키-값 뒤집기 작업에 특별히 사용됩니다. 배열을 인수로 받고 키와 값이 교환된 새 배열을 반환합니다. $original_array=[

Go 언어 맵의 성능 최적화 Go 언어에서 맵은 키-값 쌍 모음을 저장하는 데 사용되는 매우 일반적으로 사용되는 데이터 구조입니다. 그러나 대량의 데이터를 처리하는 경우 지도 성능이 저하될 수 있습니다. 지도의 성능을 향상시키기 위해 몇 가지 최적화 조치를 취하여 지도 작업의 시간 복잡성을 줄여 프로그램의 실행 효율성을 향상시킬 수 있습니다. 1. 맵 용량을 사전 할당합니다. 맵 생성 시 용량을 사전 할당하여 맵 확장 횟수를 줄이고 프로그램 성능을 향상시킬 수 있습니다. 일반적으로 우리는

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

JavaScript에서 HTTP 상태 코드를 얻는 방법 소개: 프런트 엔드 개발에서 우리는 종종 백엔드 인터페이스와의 상호 작용을 처리해야 하며 HTTP 상태 코드는 매우 중요한 부분입니다. HTTP 상태 코드를 이해하고 얻는 것은 인터페이스에서 반환된 데이터를 더 잘 처리하는 데 도움이 됩니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. HTTP 상태 코드란 무엇입니까? HTTP 상태 코드는 브라우저가 서버에 요청을 시작할 때 서비스가
