摘要:在中為新增了幾個(gè)方法,,,,,也就是一共有這么多方法了。剛開始接觸這些倒也記得不是很清楚,在此紀(jì)錄一下以加深影響。我主要從兩個(gè)角度來理解和記憶吧,一個(gè)是的使用,一個(gè)是內(nèi)部實(shí)現(xiàn)。
JS在1.6中為Array新增了幾個(gè)方法map(),filter(),some(),every(),forEach(),也就是一共有這么多方法了。
剛開始接觸這些倒也記得不是很清楚,在此紀(jì)錄一下以加深影響。我主要從兩個(gè)角度來理解和記憶吧,一個(gè)是API的使用,一個(gè)是內(nèi)部實(shí)現(xiàn)。
函數(shù)簡(jiǎn)述
map():返回一個(gè)新的Array,每個(gè)元素為調(diào)用func的結(jié)果
filter():返回一個(gè)符合func條件的元素?cái)?shù)組
some():返回一個(gè)boolean,判斷是否有元素是否符合func條件
every():返回一個(gè)boolean,判斷每個(gè)元素是否符合func條件
forEach():沒有返回值,只是針對(duì)每個(gè)元素調(diào)用func
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) 內(nèi)部實(shí)現(xiàn) // From:http://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); } };
參考文獻(xiàn)https://blog.csdn.net/github_...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/100073.html
摘要:循環(huán)方法方法不改變?cè)瓟?shù)組方法會(huì)給原數(shù)組中的每個(gè)元素都按順序調(diào)用一次函數(shù)。篩選出過濾出數(shù)組中符合條件的項(xiàng)組成新數(shù)組代碼方法方法為數(shù)組中的每個(gè)元素執(zhí)行一次函數(shù),直到它找到一個(gè)使返回表示可轉(zhuǎn)換為布爾值的值的元素。 showImg(https://segmentfault.com/img/bV2QTD?w=1600&h=500); 前言 JavaScript 發(fā)展至今已經(jīng)發(fā)展出多種數(shù)組的循環(huán)遍...
摘要:前言從最開始學(xué)的循環(huán)遍歷方法,到后來層出不窮的各種遍歷方法,其實(shí)最大的區(qū)別就是應(yīng)用場(chǎng)景的不同。我們最需要記住的就是,什么情況下用哪一種方法比較合適。 前言 從最開始學(xué)的for循環(huán)遍歷方法,到后來層出不窮的各種遍歷方法,其實(shí)最大的區(qū)別就是應(yīng)用場(chǎng)景的不同。我們最需要記住的就是,什么情況下用哪一種方法比較合適。 從挑土豆開始 showImg(https://segmentfault.com/...
摘要:需要返回值,如果不給,默認(rèn)返回使用場(chǎng)景假定有一個(gè)數(shù)值數(shù)組將數(shù)組中的值以雙倍的形式放到數(shù)組寫法方法使用場(chǎng)景假定有一個(gè)對(duì)象數(shù)組將數(shù)中對(duì)象某個(gè)屬性的值存儲(chǔ)到數(shù)組中三從數(shù)組中找出所有符合指定條件的元素檢測(cè)數(shù)值元素,并返回符合條件所有元素的數(shù)組。 showImg(https://segmentfault.com/img/remote/1460000016810336?w=1149&h=524);...
摘要:需要返回值,如果不給,默認(rèn)返回使用場(chǎng)景假定有一個(gè)數(shù)值數(shù)組將數(shù)組中的值以雙倍的形式放到數(shù)組寫法方法使用場(chǎng)景假定有一個(gè)對(duì)象數(shù)組將數(shù)中對(duì)象某個(gè)屬性的值存儲(chǔ)到數(shù)組中三從數(shù)組中找出所有符合指定條件的元素檢測(cè)數(shù)值元素,并返回符合條件所有元素的數(shù)組。 showImg(https://segmentfault.com/img/remote/1460000016810336?w=1149&h=524);...
摘要:需要返回值,如果不給,默認(rèn)返回使用場(chǎng)景假定有一個(gè)數(shù)值數(shù)組將數(shù)組中的值以雙倍的形式放到數(shù)組寫法方法使用場(chǎng)景假定有一個(gè)對(duì)象數(shù)組將數(shù)中對(duì)象某個(gè)屬性的值存儲(chǔ)到數(shù)組中三從數(shù)組中找出所有符合指定條件的元素檢測(cè)數(shù)值元素,并返回符合條件所有元素的數(shù)組。 showImg(https://segmentfault.com/img/remote/1460000016810336?w=1149&h=524);...
閱讀 2671·2021-08-20 09:38
閱讀 1424·2019-08-30 15:43
閱讀 650·2019-08-29 17:13
閱讀 1667·2019-08-29 14:01
閱讀 1371·2019-08-29 13:29
閱讀 2395·2019-08-23 18:29
閱讀 2112·2019-08-23 17:51
閱讀 1990·2019-08-23 17:16