大家好,我是IT修真院北京總院第24期的學員,一枚正直純潔善良的web程序員
今天給大家分享一下,修真院官網(wǎng)JS任務4,深度思考中的知識點——對一個數(shù)組 FILTER、SOME、MAP、FOREACH的操作分別有什么作用?
1.背景介紹
循環(huán)(loop),指的是在滿足條件的情況下,重復執(zhí)行同一段代碼。比如,while語句。
迭代(iterate),指的是按照某種順序逐個訪問列表中的每一項。比如,for語句。
遍歷(traversal),指的是按照一定的規(guī)則訪問樹形結構中的每個節(jié)點,而且每個節(jié)點都只訪問一次。
遞歸(recursion),指的是一個函數(shù)不斷調用自身的行為。
數(shù)組,在編程語言中很重要,其中every()、filter()、some()、map()、forEach()是ECMAScript5為數(shù)組定義的5個迭代方法,是為了更方便的對數(shù)組進行操作。
2.知識剖析
首先,每個方法都接收兩個參數(shù):
(1)要在每一項上運行的函數(shù)。
(2)運行該函數(shù)的作用域對象—this(可選)
array.forEach(function () {
//do your staff here;
}, this);
傳入這些方法中的函數(shù)參數(shù)本身會接收三個參數(shù):
1、數(shù)組項的值;
2、該項在數(shù)組中的位置;
3、數(shù)組對象本身;
array.forEach(function (item, index, array) {
//do your staff here;
}, this);
3.常見問題
EVERY()、FILTER()、SOME()、MAP()、FOREACH()的用法?
4.解決方案
every():對數(shù)組的每一項運行給定函數(shù),如果該函數(shù)對每一項都返回true,則返回true,否則返回false
some():對數(shù)組的每一項運行給定函數(shù),如果該函數(shù)對任一項返回true,則返回true
filter():對數(shù)組的每一項運行給定函數(shù),返回該函數(shù)會返回true的項組成的數(shù)組
map():對數(shù)組的每一項運行給定函數(shù),返回每次函數(shù)調用的結果組成的數(shù)組
forEach():對數(shù)組的每一項運行給定函數(shù),這個方法沒有返回值
5.編碼實戰(zhàn)



6.擴展思考
相對于FOR(),JS數(shù)組自定義的數(shù)組迭代方式有哪些好處?
在實現(xiàn)相同功能的前提下,后者除了能夠節(jié)省代碼量外,在實現(xiàn)某些功能上的流程中存在很多有意思的優(yōu)勢, 比如forEach相比普通的for循環(huán)的優(yōu)勢在于對稀疏數(shù)組的處理,會跳過數(shù)組中的空位。 for+i在性能測試上是優(yōu)越于后者,但是前提是,array的length要事先計算出來,而在處理非常大量的數(shù)據(jù)時候, 后者的優(yōu)勢就顯而易見了。
json對象的轉換方法,兩次轉換
7.參考文獻
參考1:Js 數(shù)組——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()
參考2:《JS高級程序設計》
參考3:js數(shù)組操作--使用迭代方法替代for循環(huán)
8.更多討論
無提問
感謝大家觀看
今天的分享就到這里啦,歡迎大家點贊、轉發(fā)、留言、拍磚~
技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現(xiàn)在開始,找個師兄,帶你入門,掌控自己學習的節(jié)奏,學習的路上不再迷?!薄?/b>
這里是技能樹.IT修真院,成千上萬的師兄在這里找到了自己的學習路線,學習透明化,成長可見化,師兄1對1免費指導。快來與我一起學習吧~
我的邀請碼:12361358,或者你可以直接點擊此鏈接:http://www.jnshu.com/login/1/12361358