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

資訊專欄INFORMATION COLUMN

Array基本概念

Alfred / 1377人閱讀

摘要:基本概念可以使用關(guān)鍵字創(chuàng)建。調(diào)用時(shí)傳入一個(gè)數(shù)組和一個(gè)函數(shù),內(nèi)部過程遍歷數(shù)組,并對(duì)數(shù)組中的每一項(xiàng)調(diào)用函數(shù),調(diào)用函數(shù)的時(shí)候會(huì)傳入兩個(gè)參數(shù),這個(gè)數(shù)組有項(xiàng),傳次,每次不一樣的不一樣的。會(huì)按照升序排列數(shù)組。

Array基本概念

Array可以使用new關(guān)鍵字創(chuàng)建 。
var a = new Array(1,2,3,4); === var a = Array(1,2,3,4); === var a = [1,2,3,4];

如果Array接受一個(gè)參數(shù),那么這個(gè)參數(shù)是length的長(zhǎng)度;
如果Array接受多個(gè)參數(shù),那么就不是length,是一個(gè)普通數(shù)組。

var a = Array(3)    //會(huì)生成一個(gè)length=3的數(shù)組
var a2 = Array(3,3)     //[3,3]

數(shù)組是特殊的對(duì)象,用對(duì)象創(chuàng)建數(shù)組(如下代碼),那和直接創(chuàng)建數(shù)組的區(qū)別是:用對(duì)象創(chuàng)建的數(shù)組沒有數(shù)組的原型(公有屬性),也就是說用對(duì)象創(chuàng)建數(shù)組,它的__proto__直接指向Object的原型,跳過Array的原型。一張圖說明prototype和__proto__的區(qū)別

var a = [1,2,3];
var obj = {
    0:1,
    1:2,
    2:3,
    length:3};
forEachmap、filterreduce

forEach接受一個(gè)函數(shù),這個(gè)函數(shù)接受三個(gè)參數(shù)(value,key,array),valuearray的元素,keyarray的索引,arrayforEach正在操作的數(shù)組(可選)。

如果自己創(chuàng)建一個(gè)forEach函數(shù)會(huì)怎么寫呢?
先自己創(chuàng)建一個(gè)forEach函數(shù),它接收兩個(gè)參數(shù)(array,fn),array是數(shù)組,fn是函數(shù);然后在內(nèi)部遍歷array,同時(shí)調(diào)用fn函數(shù),并傳入兩個(gè)參數(shù)(value,keyarray的第一項(xiàng)是value,array的索引是key。

function forEach(array,fn){
    for(var i = 0; i < array.length; i++){
        fn(array[i],i);
    }
}

forEach(["aa","bb","cc","dd","ee","ff"].function(value,key){
    console.log(value,key);   
}
/*
aa 0
bb 1
cc 2
dd 3
ee 4
ff 5
*/
})

調(diào)用foreach時(shí)傳入一個(gè)數(shù)組和一個(gè)函數(shù),內(nèi)部過程:遍歷數(shù)組,并對(duì)數(shù)組中的每一項(xiàng)調(diào)用函數(shù),調(diào)用函數(shù)的時(shí)候會(huì)傳入兩個(gè)參數(shù)(value,key),這個(gè)數(shù)組有6項(xiàng),傳6次,每次不一樣的value不一樣的key。

再來看forEach這個(gè)API(如下代碼) ,它接受一個(gè)函數(shù),這個(gè)函數(shù)接受兩個(gè)參數(shù)(value,key),那么它為什么只接受一個(gè)函數(shù)作為參數(shù)了,數(shù)組去哪里了?

var a = ["aa","bb","cc","dd","ee","ff"];
a.forEach(function(value,key){console.log(value,key)});

看一下a.forEach內(nèi)部過程。首先創(chuàng)建一個(gè)obj的對(duì)象,它內(nèi)部沒有forEach這個(gè)方法,在外面給它強(qiáng)行添加forEach,然后就像普通對(duì)象一樣調(diào)用forEach就可以了。

var obj = {
    0:"a",
    1:"b",
    length:2
};

obj.forEach = function(fn){
    for(var i = 0; i < this.length; i++){
        fn(this[i],i);
    }
}

obj.forEach(function(value,key){console.log(value,key)});

forEach遍歷數(shù)組每一項(xiàng),mapforEach的區(qū)別是map有返回值。filter有條見的篩選。
先調(diào)用filter篩選出偶數(shù),再調(diào)用map乘上2,得出結(jié)果

var a = [1,2,3,4,5,6,7,8,9];
a.filter(function(value){
    return value % 2 === 0
}).map(function(value2){
    return value2 * value2;
});    // [4,16,36,64]

reduce代替mapfilter

var a = [1,2,3,4,5,6,7,8,9]
a.reduce(function(arr,n){
    arr.push(n*2);
    return arr;
},[]);    //[2,4,6,8,10,12,14,16,18]

a.reduce(function(arr,n){
    if(n % 2 === 0){
        arr.push(n);
    }
    return arr;
},[]);    //[2,4,6,8,10]
sort重排序方法

reverse反向排序數(shù)組項(xiàng),原數(shù)組也被逆序了。
sort會(huì)按照升序排列數(shù)組。

sort可以接受一個(gè)比較函數(shù)作為參數(shù),可以實(shí)現(xiàn)降序排列

var students = ["小明","小紅","小花"];
var scores = {
    小明: 59, 
    小紅: 99, 
    小花: 80
};
students.sort(function (value1,value2){return scores[value2] - scores[value1]});

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

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

相關(guān)文章

  • 你所不知道的JavaScript數(shù)組

    摘要:原始緩沖區(qū)的創(chuàng)建通過這個(gè)構(gòu)造函數(shù)可以創(chuàng)建一個(gè)原始緩沖區(qū)從控制臺(tái)可以看到實(shí)例擁有一個(gè)的屬性,用于獲取的,一個(gè)只有以及支持的方法,用于對(duì)長(zhǎng)度進(jìn)行截取操作。所有數(shù)組類型的長(zhǎng)度均固定。 本文同步自我的博客園:http://www.cnblogs.com/hustskyking/ 相信每一個(gè) javascript 學(xué)習(xí)者,都會(huì)去了解 JS 的各種基本數(shù)據(jù)類型,數(shù)組就是數(shù)據(jù)的組合,這是一個(gè)很基本...

    KnewOne 評(píng)論0 收藏0
  • web 直播流的解析

    摘要:反正就是相反的意思了異或當(dāng)兩者中只有一個(gè)那么結(jié)果才為。將指定根據(jù)的標(biāo)識(shí)轉(zhuǎn)換成為進(jìn)制。當(dāng)創(chuàng)建實(shí)例的構(gòu)造函數(shù)時(shí),內(nèi)部會(huì)同時(shí)創(chuàng)建一個(gè)用來作為數(shù)據(jù)的存儲(chǔ)。不過,根據(jù)上面的構(gòu)造函數(shù)上看,其實(shí),可以將一整個(gè)拆成不同的進(jìn)行讀取。 Web 進(jìn)制操作是一個(gè)比較底層的話題,因?yàn)槠匠W鰳I(yè)務(wù)的時(shí)候根本用不到太多,或者說,根本用不到。 老鐵,沒毛病 那什么情況會(huì)用到呢? canvas websocket fi...

    williamwen1986 評(píng)論0 收藏0

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<