forEach與map的區別與用法
一、相同點:
1.都是循環遍歷數組中的每一項
2.每次執行匿名函數都支持三個參數,參數分別為item(當前每一項),index(索引值),arr(原數組)
3.匿名函數中的this都是指向window
4.只能遍歷數組
二、不同點
1.map()會分配內存空間存儲新數組並返回,forEach()不會返回數據。
2.forEach()允許callback更改原始數組的元素。map()返回新的數組。
1、forEach()
forEach()針對每一個元素執行提供的函數,對數據的操作會改變原數組。
var arr1 = [0,2,4,6,8]; var newArr1 = arr1.forEach(function(item,index,arr1){ console.log(this); console.log(arr1); arr1[index] = item/2; },this); console.log(arr1); console.log(newArr1);
使用場景:並不打算改變數據的時候,而只是想用數據做一些事情 ,比如存入數據庫或則打印出來。
二、map
map()不會改變原數組的值,返回一個新數組,新數組中的值為原數組調用函數處理之后的值;
var arr = [0,2,4,6,8]; var newArr = arr.map(function(item,index,arr){ console.log(this); console.log(arr); return item/2; },this); console.log(newArr);
使用場景:map()適用於你要改變數據值的時候。不僅僅在於它更快,而且返回一個新的數組。