關於js 中的 foreach map

2022-03-10 05:23:34 字數 1753 閱讀 7880

foreach是ecma5中array新方法中最基本的乙個,就是遍歷,迴圈。例如下面這個例子:

[1, 2 ,3, 4].foreach(alert);

等同於下面這個for迴圈?1

234vararray = [1, 2, 3, 4];

for(vark = 0, length = array.length; k < length; k++)

array在es5新增的方法中,引數都是function型別,預設有傳參,foreach方法中的function**支援3個引數,第1個是遍歷的陣列內容;第2個是對應的陣列索引,第3個是陣列本身。

因此,我們有:?1

23.foreach(function(value, index, array) );

對比jquery中的$.each方法:?1

23$.each(,function(index, value, array) );

會發現,第1個和第2個引數正好是相反的,大家要注意了,不要記錯了。後面類似的方法,例如$.map也是如此。?1

2345

67vardata=[1,3,4] ;

varsum=0 ;

data.foreach(function(val,index,arr))

console.log(sum);// ==> 8

map這裡的map不是「地圖」的意思,而是指「對映」。.map(); 基本用法跟foreach方法類似:

array.map(callback,[ thisobject]);
callback的引數也類似:?1

23.map(function(value, index, array) );

map方法的作用不難理解,「對映」嘛,也就是原陣列被「對映」成對應新陣列。下面這個例子是數值項求平方:?1

2345

67vardata=[1,3,4]

varsquares=data.map(function(val,index,arr))

console.log(squares);// ==> [1, 9, 16]

注意:由於foreach、map都是ecma5新增陣列的方法,所以ie9以下的瀏覽器還不支援(萬惡的ie啊),不過呢,可以從array原型擴充套件可以實現以上全部功能,例如foreach方法:?1

2345

if(typeofarray.prototype.foreach !="function") ;

}

**自別人的

關於js中的then

then 相關的東西包括但不限於 promise,thien.js 雖然還沒徹底搞清楚這些個玩意兒,但是 現在知道了 then 是幹嘛的了 最主要的,是解決了非同步方法立刻返回的問題 這個特性帶來的後遺症 假設 我要等非同步處理完了,再去執行一段 後續 怎麼做?定義乙個全域性flag,非同步處理完成...

關於 js 中 this 的理解

今天在寫乙個tab選項卡切換時遇到乙個 this 的引用問題,做個記錄加深一下理解。定時器 var timer null var lis document.getelementsbytagname li for var i 0 i 給每個li元素新增自定義屬性id,值為當前li元素在lis中的索引 ...

關於js中的沙箱

我的目標,非常簡單,就是希望能夠在我自己的系統中使用別人寫的 但是這些 可能會汙染全域性變數,甚至可能是惡意的,破壞性的。我要保證這些 被正確執行,並且其影響範圍完全受到控制,這就是我想要的沙箱。根據我自己的思考以及和一些朋友的討論,我認為我主要需要解決四點 1.變數訪問問題 第三方可以使用變數名訪...