脚本宝典收集整理的这篇文章主要介绍了js實例教程-JS中關於some(),every(),forEach(),map(),filter()之間的區別介紹,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小寶典致力於為廣大程序猿(媛)提供高品質的代碼服務,請大家多多光顧小站,小寶典在此謝過。
JS在1.6中為Array新增了幾個方法map(),filter(),some(),every(),foreach(),也就是一共有這麼多方法了。
剛開始接觸這些倒也記得不是很清楚,在此紀錄一下以加深影響。我主要從兩個角度來理解和記憶吧,一個是@L_512_1@的使用,一個是內部實現。
函數簡述
map():返回一個新的Array,每個元素為調用func的結果
filter():返回一個符合func條件的元素數組
some():返回一個boolean,判斷是否有元素是否符合func條件
every():返回一個boolean,判斷每個元素是否符合func條件
forEach():沒有返回值,只是針對每個元素調用func
API的區別
function my_func(ITem) { if (item == 1) { console.LOG('t'); return true; } console.log('f'); return false; } // init an array l = [0,1,2,3,4] // PRint: f,t,f,f,f // return:[false, true, false, false, false] l.map(my_func) // print: f,t,f,f,f // return: 1 l.filter(my_func) // print: f,t // return: true l.some(my_func) // print: f // return: false l.every(my_func) // print: f,t,f,f,f //return: undefined l.forEach(my_func) 內部實現 // From:https://develoPEr.mozilla.org Array.prototype.map = function(fun /*, thisp*/) { VAR len = this.length; if (typeof fun != "function") throw new TypeError(); var res = new Array(len); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) res[i] = fun.call(thisp, this[i], i, this); } return res; }; Array.prototype.filter = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var res = new Array(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) { var val = this[i]; // in case fun mutates this if (fun.call(thisp, val, i, this)) res.push(val); } } return res; }; Array.prototype.some = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this && fun.call(thisp, this[i], i, this)) return true; } return false; }; Array.prototype.every = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this && !fun.call(thisp, this[i], i, this)) return false; } return true; }; Array.prototype.forEach = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) fun.call(thisp, this[i], i, this); } };
JS在1.6中為Array新增了幾個方法map(),filter(),some(),every(),forEach(),也就是一共有這麼多方法了。
剛開始接觸這些倒也記得不是很清楚,在此紀錄一下以加深影響。我主要從兩個角度來理解和記憶吧,一個是API的使用,一個是內部實現。
函數簡述
map():返回一個新的Array,每個元素為調用func的結果
filter():返回一個符合func條件的元素數組
some():返回一個boolean,判斷是否有元素是否符合func條件
every():返回一個boolean,判斷每個元素是否符合func條件
forEach():沒有返回值,只是針對每個元素調用func
API的區別
function my_func(item) { if (item == 1) { console.log('t'); return true; } console.log('f'); return false; } // init an array l = [0,1,2,3,4] // print: f,t,f,f,f // return:[false, true, false, false, false] l.map(my_func) // print: f,t,f,f,f // return: 1 l.filter(my_func) // print: f,t // return: true l.some(my_func) // print: f // return: false l.every(my_func) // print: f,t,f,f,f //return: undefined l.forEach(my_func) 內部實現 // From:https://developer.mozilla.org Array.prototype.map = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var res = new Array(len); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) res[i] = fun.call(thisp, this[i], i, this); } return res; }; Array.prototype.filter = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var res = new Array(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) { var val = this[i]; // in case fun mutates this if (fun.call(thisp, val, i, this)) res.push(val); } } return res; }; Array.prototype.some = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this && fun.call(thisp, this[i], i, this)) return true; } return false; }; Array.prototype.every = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this && !fun.call(thisp, this[i], i, this)) return false; } return true; }; Array.prototype.forEach = function(fun /*, thisp*/) { var len = this.length; if (typeof fun != "function") throw new TypeError(); var thisp = arguments[1]; for (var i = 0; i < len; i++) { if (i in this) fun.call(thisp, this[i], i, this); } };
覺得可用,就經常來吧!Javascript技巧 腳本寶典 歡迎評論哦! js技巧,巧奪天工,精雕玉琢。小寶典獻醜了!
以上是脚本宝典为你收集整理的js實例教程-JS中關於some(),every(),forEach(),map(),filter()之間的區別介紹全部内容,希望文章能够帮你解决js實例教程-JS中關於some(),every(),forEach(),map(),filter()之間的區別介紹所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。