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

資訊專欄INFORMATION COLUMN

理解數(shù)組Array類型的方法

時飛 / 1384人閱讀

摘要:接收三個參數(shù)數(shù)組項的值,該項在數(shù)組中的位置,數(shù)組對象本身對數(shù)組中的每一項運(yùn)行給定函數(shù),如果該函數(shù)對任一項都返回則返回。對數(shù)組中的每一項運(yùn)行給定函數(shù),返回該函數(shù)會返回的項組成的數(shù)組。

一、理解數(shù)組:

ECMAScript數(shù)組的每一項可以保存任何類型的數(shù)據(jù),可以是字符串、數(shù)值、對象、函數(shù)、數(shù)組等等。

創(chuàng)建數(shù)組基本方式有兩種,第一種是使用Array構(gòu)造函數(shù):

    var arr=new Array(1,2,3);

可以省略new操作符。

第二種方式是使用數(shù)組字面量表達(dá)法:

    var arr=[1,2,3];

使用數(shù)組字面量表達(dá)法時,不會調(diào)用Array構(gòu)造函數(shù)。

二、數(shù)組的轉(zhuǎn)換方法:

toString()方法:返回由數(shù)組中的每個值得字符串形式拼接而成的一個以逗號分隔的字符串。

valueOf()方法;在數(shù)組中與toString()方法操作相同。

toLocaleString()方法:與前兩種方法不同的地方是,前兩種方法在調(diào)用的時候,為了取得每一項的值,調(diào)用的是每一項的toString()方法;而toLocaleString()方法在調(diào)用的時候,為了取得每一項的值,調(diào)用的是每一項的toLocaleString()方法。

三、棧方法與隊列方法 1、棧方法

push()方法:從尾部添加一個或多個參數(shù)。

    var arr=["a","b"];
    arr.push("c","d");
    alert(arr);       //a,b,c,d

pop()方法:從尾部刪除最后一項。

    var arr=["a","b"];
    arr.pop();
    alert(arr);       //a
2、隊列方法

shift()方法:從頭部刪除第一項。

    var arr=["a","b"];
    arr.shift();
    alert(arr);       //b

unshift()方法:從頭部添加一個或多個參數(shù)。

    var arr=["a","b"];
    arr.unshift("c","d");
    alert(arr);       //c,d,a,b
四、重排序方法
reverse()方法;反轉(zhuǎn)數(shù)組項的排序。
    var arr=[0,1,2,3,4];
    arr.reverse();
    alert(arr);            //4,3,2,1,0

sort()方法:按升序排列數(shù)組項——即最小的值位于最前,最大的值排在最后。

    var arr=[0,1,3,11,15];
    arr.sort();
    alert(arr);   //0,1,11,15,3

值得注意的是sort()方法會隱式調(diào)用toString()方法;所以它比較的是字符串,但是它可以接收一個比較函數(shù)作為參數(shù):

    function compare(value1,value2){
        if(value1value2){
            return 1;
        }
        else{
            return 0;
        }
    }
    var arr=[0,1,3,11,15];
    arr.sort(compare);
    alert(arr)            //0,1,3,11,15
五、操作方法

concat()方法:創(chuàng)建當(dāng)前數(shù)組一個副本,然后將接收到的參數(shù)添加到這個副本的末尾,最后返回新構(gòu)建的數(shù)組。

    var arr=[1,2];
    var arr2=arr.concat(1,[1,2]);
    alert(arr2);//1,2,1,1,2
如果參數(shù)是一或多個數(shù)組,則將這些數(shù)組中的每一項都添加到結(jié)果數(shù)組中。

slice()方法:基于當(dāng)前數(shù)組中的一或多個項創(chuàng)建一個新數(shù)組??梢越邮找换騼蓚€參數(shù),即要返回的起始和結(jié)束位置(不包括結(jié)束位置項)。

    var arr=["a","b","c","d","e"];
    var arr2=arr.slice(1);
    var arr3=arr3.slice(1,4);
    alert(arr2);//b,c,d,e
    alert(arr3);//b,c,d

splice()方法:刪除,插入,替換。
1、刪除:指定兩個參數(shù):要刪除的第一項的位置和要刪除的項數(shù)。

var arr=[1,2,3,4];
arr.splice(1,2);
alert(arr);//1,4

2、插入:指定3個參數(shù):起始位置、0(要刪除的項數(shù))、插入的項(可以任意多個項)。

var arr=["a","b","c"];
arr.splice(2,0,"d","e");
alert(arr);//a,b,d,e,c

3、替換:指定3個參數(shù):起始位置、要刪除的項數(shù)、替換的項(可以任意多個項)。

var arr=["a","b","c"];
arr.splice(2,1,"d","e");
alert(arr);//a,b,d,e
六、位置方法

indexOf()方法:從數(shù)組開頭向后查找項的位置,接收兩個參數(shù):要查找的項和表示查找起點(diǎn)位置的索引(可選的)。

var arr=["a","b","c","d","e","d","c","b","a"];
alert(arr.indexOf("d"));//3
alert(arr.indexOf("d",4));//5

值得注意的是indexOf()方法一查找到符合條件的值,就會停止查找,所以只有一個參數(shù)d的時候即從0位置開始查找顯示位置是3,而在后面加一個位置索引4之后,也就是從e這個項開始向后查找,所以顯示5。

lastIndexOf()方法:從數(shù)組末尾向后查找項的位置,接收兩個參數(shù):要查找的項和表示查找起點(diǎn)位置的索引(可選的)。

var arr=["a","b","c","d","e","d","c","b","a"];
alert(arr.lastIndexOf("d"));//5
alert(arr.lastIndexOf("d",4));//3
七、迭代方法

every():對數(shù)組中的每一項運(yùn)行給定函數(shù),如果該函數(shù)對每一項都返回true,則返回true。接收三個參數(shù):要在每一項上運(yùn)行的函數(shù),運(yùn)行該函數(shù)的作用域?qū)ο螅蛇x的)——影響this的值。

var arr=[1,2,3,4,5,4,3,2,1];
var everyResult=arr.every(function(item,index,array/*接收三個參數(shù):數(shù)組項的值,該項在數(shù)組中的位置,數(shù)組對象本身*/){
    return (item>2);
});
alert(everyResult);//false

some():對數(shù)組中的每一項運(yùn)行給定函數(shù),如果該函數(shù)對任一項都返回true,則返回true。

var arr=[1,2,3,4,5,4,3,2,1];
var someResult=arr.every(function(item,index,array){
    return (item>2);
});
alert(someResult);//true

filter():對數(shù)組中的每一項運(yùn)行給定函數(shù),返回該函數(shù)會返回true的項組成的數(shù)組。

var arr=[1,2,3,4,5,4,3,2,1];
var filterResult=arr.filter(function(item,index,array){
    return (item>2);
});
alert(filterResult);//[3,4,5,4,3]

map():對數(shù)組中的每一項運(yùn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組。

var arr=[1,2,3,4,5,4,3,2,1];
var mapResult=arr.map(function(item,index,array){
    return item*2;
});
alert(mapResult);//[2,4,6,8,10,8,6,4,2]

forEach():對數(shù)組中的每一項運(yùn)行給定函數(shù),這個方法沒有返回值。

var arr=[1,2,3,4,5,4,3,2,1];
var forEachResult=arr.forEach(function(item,index,array){
    //執(zhí)行某些操作
});
八、歸并方法
reduce(/*每一項上調(diào)用的函數(shù)*/,/*作為歸并基礎(chǔ)的初始值(可選的)*/);
    reduce(function(prev/*前一個值*/,cur/*當(dāng)前值*/,index/*項的索引*/,array/*數(shù)組對象*/){},10/*可選的*/);
    var arr=[1,2,3,4,5];
    var sum=arr.reduce(function(prev,cur,index,array){
        return prev+cur;
    });
    alert(sum);//15

這個方法會迭代數(shù)組所有想項,也就是說對數(shù)組中的每一項給定一個函數(shù),然后構(gòu)建一個最終返回的值。從數(shù)組的第一項開始,逐個遍歷到最后。

歸并開始時,第一次迭代發(fā)生在數(shù)組的第二項上,也就是索引值為1,這時prev是1,cur是2。第二次迭代發(fā)生在數(shù)組的第三項上,也就是索引值為2,這時prev是3(因為此時已經(jīng)發(fā)生過一次迭代,是前一次迭代1+2的結(jié)果),cur是3。這個過程會持續(xù)到把數(shù)組中的每一項都訪問一遍,最后返回結(jié)果。

但是如果傳入一個初始值,那就不一樣了:

    var arr=[1,2,3,4,5];
    var sum=arr.reduce(function(prev,cur,index,array){
        return prev+cur;
    },20);
    alert(sum);//35

歸并開始時,第一次迭代發(fā)生在數(shù)組的第一項上,也就是索引值為0,這時prev是20,cur是1。

reduceRight():與reduce()類似,只不過方向相反而已,除此之外,它們完全相同。

    var arr=[1,2,3,4,5];
    var sum=arr.reduceRight(function(prev,cur,index,array){
        return prev+cur;
    },20);
    alert(sum);//35

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

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

相關(guān)文章

  • 深入理解JavaScript類數(shù)組

    摘要:但是,我們可以借用類數(shù)組方法不難看出,此時的在調(diào)用數(shù)組原型方法時,返回值已經(jīng)轉(zhuǎn)化成數(shù)組了。很多時候,深入看看源代碼也會讓你對這個理解的更透徹。的前端樂園原文鏈接深入理解類數(shù)組 起因 寫這篇博客的起因,是我在知乎上回答一個問題時,說自己在學(xué)前端時把《JavaScript高級程序設(shè)計》看了好幾遍。于是在評論區(qū)中,出現(xiàn)了如下的對話:showImg(https://segmentfault.c...

    Towers 評論0 收藏0
  • 類型數(shù)組(Typed Array)與ArrayBuffer理解

    摘要:類型化數(shù)組也是中新引入的。用一句話解釋類型化數(shù)組就是它是操作二進(jìn)制數(shù)據(jù)的接口。類型化數(shù)組類型化數(shù)組的應(yīng)用二進(jìn)制數(shù)據(jù)的接口主要應(yīng)用于文件,在中涉及文件處理的幾乎都可以應(yīng)用,主要是,,。 類型化數(shù)組(Typed Array)也是HTML5中新引入的API。用一句話解釋類型化數(shù)組就是:它是JS操作二進(jìn)制數(shù)據(jù)的接口。 眾所周知,直接操作二進(jìn)制數(shù)據(jù)可以使程序更為高效, 盡管JS對常規(guī)數(shù)組做了很多...

    Worktile 評論0 收藏0
  • 深入理解ES6之《改進(jìn)數(shù)組功能》

    摘要:方法由于構(gòu)造函數(shù)創(chuàng)建數(shù)組時的怪異行為,比方說如下方法總會創(chuàng)建一個包含所有參數(shù)的數(shù)組方法不通過屬性確定返回值的類型,它使用當(dāng)前構(gòu)造函數(shù),也就是方法中的值來確定正確的返回數(shù)據(jù)的類型方法以前總是使用將類數(shù)組轉(zhuǎn)換成數(shù)組方法可接受可迭代對象或類數(shù)組對 Array.of方法 由于Array構(gòu)造函數(shù)創(chuàng)建數(shù)組時的怪異行為,比方說如下: let items = new Array(2) console....

    Awbeci 評論0 收藏0
  • 深入理解ES6之《改進(jìn)數(shù)組功能》

    摘要:方法由于構(gòu)造函數(shù)創(chuàng)建數(shù)組時的怪異行為,比方說如下方法總會創(chuàng)建一個包含所有參數(shù)的數(shù)組方法不通過屬性確定返回值的類型,它使用當(dāng)前構(gòu)造函數(shù),也就是方法中的值來確定正確的返回數(shù)據(jù)的類型方法以前總是使用將類數(shù)組轉(zhuǎn)換成數(shù)組方法可接受可迭代對象或類數(shù)組對 Array.of方法 由于Array構(gòu)造函數(shù)創(chuàng)建數(shù)組時的怪異行為,比方說如下: let items = new Array(2) console....

    genefy 評論0 收藏0
  • 深入理解ES6筆記(十)增強(qiáng)數(shù)組功能

    摘要:在可迭代對象上使用所有數(shù)組上的新方法與方法與方法均接受兩個參數(shù)一個回調(diào)函數(shù)一個可選值用于指定回調(diào)函數(shù)內(nèi)部的?;卣{(diào)函數(shù)可接收三個參數(shù)數(shù)組的某個元素該元素對應(yīng)的索引位置以及該數(shù)組自身。 主要知識點(diǎn):創(chuàng)建數(shù)組、數(shù)組上的新方法、類型化數(shù)組showImg(https://segmentfault.com/img/bVbfWo1?w=991&h=587); 《深入理解ES6》筆記 目錄 創(chuàng)建數(shù)組...

    pekonchan 評論0 收藏0

發(fā)表評論

0條評論

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