JS中map()與forEach()的用法

2022-03-30 05:19:36 字數 2195 閱讀 1665

相同點:

1.都是迴圈遍歷陣列中的每一項

2.每次執行匿名函式都支援三個引數,引數分別為item(當前每一項),index(索引值),arr(原陣列)

3.匿名函式中的this都是指向window

4.只能遍歷陣列

不同點:

map()

map方法返回乙個新的陣列,陣列中的元素為原始陣列呼叫函式處理後的值

也就是map()進行處理之後返回乙個新的陣列

⚠️注意:map()方法不會對空陣列進行檢測

map方法不會改變原始陣列

var arr = [0,2,4,6,8];

var str = arr.map(function

(item,index,arr),this

);console.log(str);

//[0,1,2,3,4]

foreach

foreach方法用於呼叫陣列的每個元素,將元素傳給**函式

⚠️注意: foreach對於空陣列是不會呼叫**函式的 ,

沒有返回乙個新陣列&沒有返回值

應用場景:為一些相同的元素,繫結事件處理器!

不可鏈式呼叫

var arr = [0,2,4,6,8]

var sum =0;

var str = arr.foreach(item,index,arr)

我們先來看兩者之間的相同之處

var arr = ['a','b','c','d'];

arr.foreach(

function(item,index,arr),123);      //

這裡的123引數,表示函式中的this指向,可寫可不寫,如果不寫,則this指向window

arr.map(

function(item,index,arr),123);

執行之後,可以看出兩者引數沒有任何的區別,除此之外兩者之間還有乙個特性,就是不能停止裡面的遍歷,除非程式報錯,那麼兩者之間的區別在那裡呢???

在於返回值!!!

var a = arr.foreach(function

(item,index,arr));

var b = arr.map(function

(item,index,arr)); 

console.log(a);

//undefined

console.log(b); //

[123,123,123,123]

我們可以利用map的這個特性做哪些事情呢,比如

var b = arr.map(function

(item,index,arr)); 

console.log(b);

//["aa", "ba", "ca", "da"]

//

之前我們的迴圈是這樣的

for (var index = 0; index < myarray.length; index++)

// 從es5開始提供這樣的for迴圈  

myarray.foreach(function

(value) );

//

在es6我們還可以這樣任性

//迴圈下標或者key(for-in)

for (var index in myarray)

//迴圈value(for-of)

for (var

value of myarray)

//甚至直接迴圈key和value,no problem

for (var

[key, value] of phonebookmap)

//或者更者我們這樣「優雅」的迴圈物件(貌似和es6沒有關係)

for (var

key of object.keys(someobject))

//

現場例項,我們這樣使用

var items =[...];

items.foreach((item, i) =>);

js中的forEach迴圈與map迴圈

在js中進行陣列迴圈時經常會用到foreach方法和map方法,下面就來看一下這兩種遍歷方法的區別。vararray 1,2,3,4,5 var array1 array.foreach function val vararray2 array.map function val console.lo...

js中 forEach 和 map 區別

都是迴圈遍歷陣列中的每一項。foreach 和map 裡面每一次執行匿名函式都支援3個引數 陣列中的當前項item,當前項的索引index,原始陣列input。匿名函式中的this都是指window。只能遍歷陣列。1.foreach 沒有返回值,即返回值為undefined 理論上這個方法是沒有返回...

JS中Map和ForEach的區別

foreach 方法 針對每乙個元素執行提供的函式。map 方法 建立乙個新的陣列,其中每乙個元素由呼叫陣列中的每乙個元素執行提供的函式得來。區別foreach 方法不會返回執行結果,而是undefined。也就是說,foreach 會修改原來的陣列。而map 方法會得到乙個新的陣列並返回。例子製作...