成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

JavaScript學(xué)習(xí)之?dāng)?shù)組(下)

Labradors / 3418人閱讀

摘要:數(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()與reduceRight()

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()與lastIndexOf()

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

相關(guān)文章

  • JavaScript學(xué)習(xí)之JSON對(duì)象

    摘要:原始類型的值只有四種字符串?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)制表示)、布爾值和...

    banana_pi 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)之正則表達(dá)式

    摘要:正則表達(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í)...

    idealcn 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)之Object()new命令

    摘要:命令作用作用是執(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 ...

    Salamander 評(píng)論0 收藏0
  • JavaScript學(xué)習(xí)之零碎記憶點(diǎn)總結(jié)記錄(一)

    摘要:總結(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...

    fou7 評(píng)論0 收藏0
  • Javascript設(shè)計(jì)模式學(xué)習(xí)之Module(模塊)模式

    摘要:實(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模塊 ...

    付永剛 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<