1.背景介紹
數(shù)組,在編程語(yǔ)言中很重要诞帐,其中filter()角雷、some()祸穷、map()、forEach()是ECMAScript5為數(shù)組定義的5個(gè)迭代方法谓罗,是為了更方便的對(duì)數(shù)組進(jìn)行操作粱哼。
2.知識(shí)剖析
首先,每個(gè)方法都接收兩個(gè)參數(shù):
(1)要在每一項(xiàng)上運(yùn)行的函數(shù)檩咱。
(2)運(yùn)行該函數(shù)的作用域?qū)ο蟆猼his(可選)
其次揭措,傳入這些方法中的函數(shù)參數(shù)本身會(huì)接收三個(gè)參數(shù):數(shù)組項(xiàng)的值胯舷;該項(xiàng)在數(shù)組中的位置;數(shù)組對(duì)象本身绊含;
3.常見(jiàn)問(wèn)題
filter()桑嘶、some()、map()躬充、forEach()的用法?
4.解決方案
forEach():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)逃顶,這個(gè)方法沒(méi)有返回值。
map():對(duì)數(shù)組中每一項(xiàng)運(yùn)行給定函數(shù)充甚,返回每次函數(shù)調(diào)用的結(jié)果組成的函數(shù)以政。
filter():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組伴找。
some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù)盈蛮,如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true技矮。
path:表示 cookie 影響到的路徑抖誉,匹配該路徑才發(fā)送這個(gè) cookie。
expires 和 maxAge:告訴瀏覽器 cookie時(shí)候過(guò)期衰倦,maxAge 是 cookie 多久后過(guò)期的相對(duì)時(shí)間袒炉。
不設(shè)置這兩個(gè)選項(xiàng)時(shí)會(huì)產(chǎn)生 session cookie,session cookie 是 transient 的樊零,當(dāng)用戶關(guān)閉瀏覽器時(shí)我磁,就被清除。一般用來(lái)保存 session 的 session_id淹接。
secure:當(dāng) secure值為true時(shí)十性,cookie 在 HTTP 中是無(wú)效叛溢,在 HTTPS 中才有效
httpOnly:瀏覽器不允許腳本操作 document.cookie 去更改 cookie塑悼。一般情況下都應(yīng)該設(shè)置這個(gè)為true,這樣可以避免被 xss 攻擊拿到 cookie楷掉。
5.編碼實(shí)戰(zhàn)
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
return (item > 2);
});
alert(filterResult); //[3,4,5,3]
6.擴(kuò)展思考
相對(duì)于for()厢蒜,JS數(shù)組自定義的數(shù)組迭代方式有哪些好處?
答:在實(shí)現(xiàn)相同功能的前提下烹植,后者除了能夠節(jié)省代碼量外斑鸦,在實(shí)現(xiàn)某些功能上的流程中存在很多有意思的優(yōu)勢(shì),比如forEach相比普通的for循環(huán)的優(yōu)勢(shì)在于對(duì)稀疏數(shù)組的處理草雕,會(huì)跳過(guò)數(shù)組中的空位巷屿。for+i在性能測(cè)試上是優(yōu)越于后者,但是前提是墩虹,array的length要事先計(jì)算出來(lái)嘱巾,而在處理非常大量的數(shù)據(jù)時(shí)候憨琳,后者的優(yōu)勢(shì)就顯而易見(jiàn)了。
7.參考文獻(xiàn)
參考一:Js
數(shù)組——filter()旬昭、map()篙螟、some()、every()问拘、forEach()遍略、lastIndexOf()、indexOf()骤坐、
http://www.cnblogs.com/xiao-hong/p/3194027.html
參考二:Js forEach()詳解
http://www.2cto.com/kf/201506/411285.html