摘要:數(shù)組篇方法函數(shù)可以將函數(shù)作為參數(shù)傳入,并將數(shù)組中每個(gè)元素代入函數(shù)進(jìn)行處理返回,返回一個(gè)新的數(shù)組可以看出可以傳入兩個(gè)參數(shù),第一個(gè)參數(shù)中函數(shù)可以填入三個(gè)參數(shù),數(shù)組的元素,數(shù)組的索引,數(shù)組本身第二個(gè)參數(shù)用來綁定回調(diào)函數(shù)內(nèi)部的注意點(diǎn)當(dāng)元素為空位,,
數(shù)組篇 map()方法
map函數(shù)可以將函數(shù)作為參數(shù)傳入,并將數(shù)組中每個(gè)元素代入函數(shù)進(jìn)行處理返回,返回一個(gè)新的數(shù)組
arr.map(function (elem, index, arr) {...}, arg)
可以看出map可以傳入兩個(gè)參數(shù),第一個(gè)參數(shù)中函數(shù)可以填入三個(gè)參數(shù),elem:數(shù)組的元素,index:數(shù)組的索引,arr:數(shù)組本身
第二個(gè)參數(shù)用來綁定回調(diào)函數(shù)內(nèi)部的this
var arr = [1, 2, 3, 4, 5, 6, 7]; var obj = {a : 3}; var new_arr = arr.map(function (elem) { if (this.a < elem) { return elem * 2; } else{ return this.a; } },obj); console.log(new_arr); //?[3, 3, 3, 8, 10, 12, 14]
注意點(diǎn):當(dāng)元素為空位,undefined,null時(shí)map的表現(xiàn)
var count = 0; var f = function (elem, index) { count ++; }; [1, , 3].map(f); //count 2 [1, null,3 ].map(f); //count 3 [1, undefined, 3].map(f); //count 3
當(dāng)元素是空位時(shí)map會(huì)跳過,undefined,null不會(huì)跳過
forEach()方法forEach函數(shù)與map類似,也是遍歷數(shù)組,代入函數(shù),沒有返回值;可以理解成只是將數(shù)組元素進(jìn)行一些操作處理
個(gè)人覺得forEach能實(shí)現(xiàn)的,map也能實(shí)現(xiàn)
var arr = []; [1, 2, 3].forEach(function (elem) { arr.push(elem * 2); })
同理當(dāng)元素是空位時(shí)forEach會(huì)跳過,undefined,null不會(huì)跳過
filter()方法filter函數(shù)是過濾一些元素,當(dāng)返回值為true時(shí),保留元素,false時(shí),舍去元素
var arr = [1, 2, 3].filter(function (elem) { if(elem > 2) { return 1; } return 0; }); arr; //[3]
同理當(dāng)元素是空位時(shí)forEach會(huì)跳過,undefined,null不會(huì)跳過
some(),every()方法兩個(gè)方法函數(shù)的都是布爾值 some函數(shù),將數(shù)組遍歷代入函數(shù)中,依次執(zhí)行當(dāng)一個(gè)滿足條件就返回布爾值true,否則遍歷完都不滿足返回false every函數(shù),將數(shù)組遍歷代入函數(shù)中,依次執(zhí)行當(dāng)一個(gè)不滿足條件就返回布爾值false,否則遍歷完都滿足返回true
var count = 0 var bool = ["1", 2, 4].every(function (elem) { count ++; return (typeof elem === "number"); }); console.log(count, bool); //1 false
var count = 0 var bool = [1, "2", "4"].some(function (elem) { count ++; return (typeof elem === "number"); }); console.log(count, bool); //1 true
對(duì)于空位,null,undefined的執(zhí)行
every()與some()一樣:空位時(shí)會(huì)跳過,undefined,null不會(huì)跳過
當(dāng)為空數(shù)組時(shí)([],[,]):
some()返回false,個(gè)人方便理解,遍歷時(shí)一直在跳過,都不滿足最后只好返回false
every()返回true,個(gè)人方便理解,遍歷時(shí)一直在跳過,都滿足最后只好返回true;
reduce函數(shù)的實(shí)現(xiàn)效果有點(diǎn)像斐波那契數(shù)列的味道
arr.reduce(function (prev, cur, index, arr) {}, arg)
reduce函數(shù)可以接受兩個(gè)參數(shù)
第一個(gè)參數(shù)是函數(shù),prev:累計(jì)變量,也就是上一次的執(zhí)行結(jié)果;cur:當(dāng)前變量;index:當(dāng)前變量的索引;arr:操作的數(shù)組本身
第二個(gè)參數(shù)用來指定初始值,可以用于處理空數(shù)組
var f = function (prev, cur) { return prev + cur; }; [].reduce(f, 1); //1 [1, 2].reduce(f, 1); //4 [].reduce(f); //報(bào)錯(cuò)Reduce of empty array with no initial value
有一個(gè)有趣的應(yīng)用:查找數(shù)組中l(wèi)ength最長的,利用參數(shù)prev的累計(jì)功能
var f = function (prev, cur) { return prev.length < cur.length ? cur : prev; }; var lon = ["123", "11113","23","4322"].reduce(f); console.log(lon);
reduceRight函數(shù)與reduce函數(shù)一樣,只不過從后往前遍歷數(shù)組
同理當(dāng)元素是空位時(shí)reduce和reduceRight會(huì)跳過,undefined,null不會(huì)跳過
indexOf函數(shù)返回給定元素在數(shù)組中第一次出現(xiàn)的位置,如果沒有出現(xiàn)則返回-1;
匹配規(guī)則用的是全等(===)
不填參數(shù),返回-1
特別是匹配對(duì)象和NaN時(shí),對(duì)象在全等下比較的是地址,而NaN不等于自身
var arr = [NaN, 1, {a : 1}]; console.log(arr.indexOf()); //-1 console.log(arr.indexOf(NaN)); //-1 console.log(arr.indexOf(1)); //1 console.log(arr.indexOf({a : 1})); //-1
lastIndexOf()是從后往前找
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/98162.html
摘要:原始類型的值只有四種字符串?dāng)?shù)值必須以十進(jìn)制表示布爾值和不能使用和。字符串必須使用雙引號(hào)表示,不能使用單引號(hào)。數(shù)組或?qū)ο笞詈笠粋€(gè)成員的后面,不能加逗號(hào)。 JSON對(duì)象 補(bǔ)充記錄一下,有些方法很需要熟練記憶的 JSON對(duì)象的規(guī)定 JSON對(duì)象對(duì)值有嚴(yán)格的規(guī)定 復(fù)合類型的值只能是數(shù)組或?qū)ο?,不能是函?shù)、正則表達(dá)式對(duì)象、日期對(duì)象。原始類型的值只有四種:字符串、數(shù)值(必須以十進(jìn)制表示)、布爾值和...
摘要:正則表達(dá)式如何創(chuàng)建正則表達(dá)式字面量創(chuàng)建通過構(gòu)造函數(shù)正則表達(dá)式實(shí)例屬性及方法三個(gè)修飾符屬性,只讀不可修改正則表達(dá)式是否添加了忽略大小寫的修飾符,返回一個(gè)布爾值正則表達(dá)式是否添加了全局匹配的修飾符,返回一個(gè)布爾值正則表達(dá)式是否添加了換行的修飾符 正則表達(dá)式 如何創(chuàng)建正則表達(dá)式 字面量創(chuàng)建var r = /a/; 通過構(gòu)造函數(shù)var r = new RegExp(a); 正則表達(dá)式實(shí)...
摘要:命令作用作用是執(zhí)行構(gòu)造函數(shù),返回實(shí)例對(duì)象上面例子是自定義一個(gè)構(gòu)造函數(shù),其最大的特點(diǎn)就是首字母大寫,用執(zhí)行構(gòu)造函數(shù)其中,在的執(zhí)行下,代表了實(shí)例化后的對(duì)象,這個(gè)也就有屬性注意點(diǎn)如果不用執(zhí)行構(gòu)造函數(shù),那么指向的是全局有兩種方式可以避免內(nèi)部定義嚴(yán)格 new命令 new作用 作用是執(zhí)行構(gòu)造函數(shù),返回實(shí)例對(duì)象 function F() { this.name = object } var ...
摘要:總結(jié)記錄常見的五種類型報(bào)錯(cuò)語法解析錯(cuò)誤變量未定義變量類型錯(cuò)誤數(shù)組越界相關(guān)函數(shù)參數(shù)錯(cuò)誤能防止報(bào)錯(cuò)導(dǎo)致后面代碼不能執(zhí)行問題的未定義不影響后面函數(shù)的執(zhí)行注意點(diǎn)在報(bào)錯(cuò)前,不執(zhí)行里的內(nèi)容不報(bào)錯(cuò)也不執(zhí)行在報(bào)錯(cuò)后,的內(nèi)容不會(huì)被執(zhí)行執(zhí)行完結(jié)束,如果有 總結(jié)記錄 try-catch-finally 常見的五種類型報(bào)錯(cuò) SyntaxError語法解析錯(cuò)誤 ReferenceError變量未定義 Type...
摘要:實(shí)現(xiàn)模塊的幾種方法對(duì)象字面量表示法模式模式模式模塊對(duì)象字面量對(duì)象字面量型完整版配置對(duì)象基本方法根據(jù)配置信息輸出內(nèi)容重寫當(dāng)前的配置信息輸出結(jié)果值模式最初被定義為一種在傳統(tǒng)軟件工程中為類提供私有和公有封裝的方法。該模式返回一個(gè)對(duì)象。 javascript實(shí)現(xiàn)模塊的幾種方法: 對(duì)象字面量表示法 Module模式 AMD模式 CommonJS模式 ECMAScript Harmony模塊 ...
閱讀 3301·2021-09-22 15:05
閱讀 2854·2019-08-30 15:56
閱讀 1122·2019-08-29 17:09
閱讀 865·2019-08-29 15:12
閱讀 2142·2019-08-26 11:55
閱讀 3226·2019-08-26 11:52
閱讀 3435·2019-08-26 10:29
閱讀 1428·2019-08-23 17:19