成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

js遍歷集合

546669204 / 2031人閱讀

摘要:遍歷只遍歷對象自身的和繼承的可枚舉的屬性可枚舉的是繼承來的可枚舉屬性在遍歷數(shù)組時(shí)不建議使用,因?yàn)楸闅v不能保證遍歷順序,并且如果數(shù)組原型上添加了屬性,也會被遍歷出來建議在遍歷數(shù)組時(shí)用方法,如果遍歷對象用,再次建議相對來說,它會遍歷出繼

遍歷 for-in

只遍歷對象自身的和繼承的可枚舉的屬性

Object.prototype.enumer=function(){
    console.log("可枚舉的");
}

var obj={a:1,b:2};
for(var o in obj){
    console.log(o);
}

// a
// b
// enumer

//enumer是繼承來的可枚舉屬性

在遍歷數(shù)組時(shí)不建議使用,因?yàn)?b>for-in遍歷不能保證遍歷順序,并且如果數(shù)組原型上添加了屬性,也會被遍歷出來;

建議:

在遍歷數(shù)組時(shí)用for方法,如果遍歷對象用for-in,再次建議相對for-in來說,它會遍歷出繼承來的可枚舉對象,所以更建議使用Obect.keys()方法

forEach

按照索引的順序按個(gè)傳遞給定義的一個(gè)函數(shù),并且可以在原數(shù)組的基礎(chǔ)上進(jìn)行修改

var arr=[1,2,4,5];
arr.forEach(function(x,i,a){
    a[i] = x+1 
}) ;

// 其中調(diào)用函數(shù)中有三個(gè)參數(shù),x 表示數(shù)組中元素,i 表示下標(biāo),a 表示數(shù)組本身

回調(diào)過空位,并且保留空位

var arr=[1,2,,,3,4];  
arr.forEach(function(x,i,a){
    a[i] = x+1 
});
arr;  // [2, 3, , , 4, 5]

map()

將調(diào)用的數(shù)組的每個(gè)元素傳遞給指定的函數(shù),并返回一個(gè)新數(shù)組,且函數(shù)必須有返回值

var arr=[1,2,3];
arr.map(function(x){ 
    return x * x; 
});
arr;  // [1,4,9]

如果是稀疏數(shù)組,返回的也是相同方式的稀疏數(shù)組;它具有相同的長度,相同的缺失元素;

filter()

判斷傳遞函數(shù)返回值是true還是false,true 表示此數(shù)組元素被添加到返回?cái)?shù)組(新數(shù)組)中,false 則相反;

返回一個(gè)新數(shù)組(通過邏輯判斷的),并且返回的是稠密的數(shù)組

[1,2,3].filter(function( x , i ,arr ){   
return x<3;
});  
//  [1,2]

// 其中三個(gè)參數(shù)和forEach表示的一樣;

filter() 會跳過稀疏數(shù)組中缺少的元素,它的返回?cái)?shù)組總是稠密的;

filter的兩種用法:

用來壓縮稀疏數(shù)組

var dense = sparse.filter(function(){
    return true; 
});

壓縮空缺并刪除undefined和null元素:

a = a.filter(function(x){
    return x !==undefined && x !=unll; 
});

every() / some()

兩者都是通過對數(shù)組元素應(yīng)用指定的函數(shù)進(jìn)行判定,返回true或者false

every() 當(dāng)且僅當(dāng)針對數(shù)組中的所有元素通過判斷都是true時(shí),函數(shù)返回true,如果有一個(gè)為false,那么函數(shù)返回false

some() 當(dāng)數(shù)組中有一個(gè)元素通過判斷是true時(shí),函數(shù)返回true;如果要返回false,必須所有元素都返回false才可以;

[1,3,5].every(function(x){ 
return x<8 ;
});  
// true  元素都返回true

[1,2,4].some(function(x){ 
return 4 % 4 === 0; 
})  
// true 有一個(gè)元素返回true

兩者都是確認(rèn)返回什么值,它們就會停止遍歷數(shù)組元素;

在空數(shù)組上,every()返回true,some()返回 false

reduce()

使用指定的函數(shù)將數(shù)組元素進(jìn)行組合,生成單個(gè)值,有兩個(gè)參數(shù):

第一個(gè)參數(shù)是執(zhí)行化簡的函數(shù)(化簡函數(shù)就是用某種方法把兩個(gè)值組合或化簡為一個(gè)值,并返回化簡后的值),第二個(gè)參數(shù)是一個(gè)傳遞給函數(shù)的初始值;

var arr=[1,2,4];
var brr=arr.reduce(function(res,x,i,arr){
    // 其中 res 表示每次化簡后的值,x 表示數(shù)組元素,i 表示數(shù)組下標(biāo),arr 表示數(shù)組本身
    return res + x;
},1);
brr;  // 8

其中1是初始值,初始值存在的時(shí)候,res首先賦初始值,x賦數(shù)組第一個(gè)元素,進(jìn)行運(yùn)算之后,res賦返回的值,x賦數(shù)組的第二個(gè)元素 ......,如果初始值不存在,那么resx 分別賦數(shù)組第一個(gè)和第二個(gè)元素,以此類推 ......;

在空數(shù)組中,不帶初始值參數(shù)調(diào)用reduce將會報(bào)錯(cuò)

var arr=[];
var brr=arr.reduce(function(res,x){
    return res+x;
}); 
// TypeError: Reduce of empty array with no initial value

如果數(shù)組只有一個(gè)值且沒有指定初始值,或者有一個(gè)空數(shù)組且指定一個(gè)初始值,reduce只會返回那個(gè)值,不會調(diào)用化簡函數(shù);

reduceRight()

工作原理和reduce一樣,不同的是它按照數(shù)組索引從高到低(從左到右)處理數(shù)組

for...of...遍歷

暫無

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91806.html

相關(guān)文章

  • JS數(shù)據(jù)結(jié)構(gòu)與算法_集合&字典

    摘要:上一篇數(shù)據(jù)結(jié)構(gòu)與算法鏈表寫在前面說明數(shù)據(jù)結(jié)構(gòu)與算法系列文章的代碼和示例均可在此找到一集合集合數(shù)據(jù)結(jié)構(gòu)集合是一種包含不同元素的數(shù)據(jù)結(jié)構(gòu)。集合中的元素成為成員。 上一篇:JS數(shù)據(jù)結(jié)構(gòu)與算法_鏈表 寫在前面 說明:JS數(shù)據(jù)結(jié)構(gòu)與算法 系列文章的代碼和示例均可在此找到 一、集合Set 1.1 集合數(shù)據(jù)結(jié)構(gòu) 集合set是一種包含不同元素的數(shù)據(jù)結(jié)構(gòu)。集合中的元素成為成員。集合的兩個(gè)最重要特性是:...

    sf_wangchong 評論0 收藏0
  • 如何高效地遍歷 MongoDB 超大集合?

    摘要:執(zhí)行測試代碼兩種不同遍歷方法的代碼分別位于和。參考如何使用對一個(gè)萬的的表進(jìn)行遍歷操作關(guān)于專注于微信小程序微信小游戲支付寶小程序和線上應(yīng)用實(shí)時(shí)監(jiān)控。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,付費(fèi)客戶有金山軟件百姓網(wǎng)等眾多品牌企業(yè)。 GitHub 倉庫:Fundebug/loop-mongodb-big-collection showImg(https://segmentfault.c...

    王晗 評論0 收藏0
  • 如何高效地遍歷 MongoDB 超大集合?

    摘要:執(zhí)行測試代碼兩種不同遍歷方法的代碼分別位于和。參考如何使用對一個(gè)萬的的表進(jìn)行遍歷操作關(guān)于專注于微信小程序微信小游戲支付寶小程序和線上應(yīng)用實(shí)時(shí)監(jiān)控。自從年雙十一正式上線,累計(jì)處理了億錯(cuò)誤事件,付費(fèi)客戶有金山軟件百姓網(wǎng)等眾多品牌企業(yè)。 GitHub 倉庫:Fundebug/loop-mongodb-big-collection showImg(https://segmentfault.c...

    Batkid 評論0 收藏0
  • 我對JS集合的簡單學(xué)習(xí)

    摘要:我對集合的學(xué)習(xí)第一步知道相關(guān)概念集合是由一組無序且唯一的項(xiàng)組成的,在中已經(jīng)實(shí)現(xiàn)了類似的類。就是集合第二步實(shí)現(xiàn)相關(guān)操作方法首先實(shí)現(xiàn)方法,判斷值是否在集合中,返回布爾值。操作符還有另外一種實(shí)現(xiàn)方法,方法返回表明一個(gè)對象是否具有特定屬性的布爾值。 我對集合的學(xué)習(xí) 第一步知道相關(guān)概念 集合是由一組無序且唯一的項(xiàng)組成的,在ES6中已經(jīng)實(shí)現(xiàn)了類似的Set類。 function Set() { ...

    paney129 評論0 收藏0
  • NodeJs爬蟲抓取古代典籍,共計(jì)16000個(gè)頁面心得體會總結(jié)及項(xiàng)目分享

    摘要:目前這個(gè)爬蟲還是比較簡單的類型的,直接抓取頁面,然后在頁面中提取數(shù)據(jù),保存數(shù)據(jù)到數(shù)據(jù)庫??偨Y(jié)寫這個(gè)項(xiàng)目其實(shí)主要的難點(diǎn)在于程序穩(wěn)定性的控制,容錯(cuò)機(jī)制的設(shè)置,以及錯(cuò)誤的記錄,目前這個(gè)項(xiàng)目基本能夠?qū)崿F(xiàn)直接運(yùn)行一次性跑通整個(gè)流程。 前言 之前研究數(shù)據(jù),零零散散的寫過一些數(shù)據(jù)抓取的爬蟲,不過寫的比較隨意。有很多地方現(xiàn)在看起來并不是很合理 這段時(shí)間比較閑,本來是想給之前的項(xiàng)目做重構(gòu)的。后來 利用這...

    legendmohe 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<