js實例教程-JS中關於some(),every(),forEach(),map(),filter()之間的區別介紹

发布时间:2018-11-23 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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(&#39;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 &amp;& !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,请注明来意。