陣列中map,forEach和for迴圈的區別

2022-07-19 10:42:11 字數 1432 閱讀 8296

今天遇到了一點有意思的事情,同事用了map出了點問題,頁面的路由重新進行了載入,所以今天我們說一些map  foreach  for的區別

遍歷效能上來說for迴圈遍歷 < for…of遍歷 < foreach遍歷 < for…in遍歷 < map遍歷

1)經典的for迴圈:

for(var i = 0; i < arr.length; i++)

2)for...in

for(var i in  arr)

3) foreach

arr.foreach(function(i))

4) map

arr.map(function(i))

5) es6的語法  for...of

for(let i of arr)

foreach 和map的區別:

相同點:

(1)都是迴圈遍歷陣列中每一項

(2)foreach 和 map方法中每次執行匿名函式都支援3個引數:item(當前每一項的值)  index(索引值)  arr(原陣列)

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

(4)只能遍歷陣列

(5)都不會改變原陣列

區別:map方法:

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

(2)map方法不會對空的陣列進行檢測,map方法不會改變原始陣列

(3)chrome、safari1.5+、opera都支援,ie9+

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

var str = arr.map(function(item,index,arr),this);

console.log(str);//[0,1,2,3,4]

若arr為空陣列,則map方法返回的也是乙個空陣列

foreach方法

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

2.foreach對於空陣列是不會呼叫**函式的

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

var sum = 0;

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

console.log(sum);//20

console.log(str); //undefined

無論arr是不是空陣列,foreach返回的都是undefined。這個方法只是將陣列中的每一項作為callback的引數執行一次。

5 2 1 F 和 C 中的多值

5.2.1 f 和 c 中的多值 我們在第三章討論元組時,用 c 實現了乙個 tuple 類,與 f 中的元組有相同的行為。使用元組不是從 c 中的方法中返回多值的通常做法,你仍會發現,以函式方式寫 還是有用的。如果想在 c 中寫這個,而不使用元組,或者為每乙個返回多值的方法宣告乙個新的類,你可能使...

js中onkeydown事件,相容IE和FF

概念 onkeypress onkeyup onkeydown區別 onkeypress 這個事件在使用者按下並放開任何字母數字鍵時發生。系統按鈕 例如,箭頭鍵和功能鍵 無法得到識別。onkeyup 這個事件在使用者放開任何先前按下的鍵盤鍵時發生。onkeydown 這個事件在使用者按下任何鍵盤鍵 ...

F 入門 六 F 中的 for while迴圈

首先我們來看看 f 中基本的 for迴圈編寫方法。for迴圈 for語句 1 for 迴圈變數 表示式 1 to 表示式2 do 表示式3 done for語句 2 for 迴圈變數 in表示式 4 do 表示式5done for語句1有點 c語言的風格。for語句 2就是一般所說的 foreach...