亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

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

時(shí)飛 / 1420人閱讀

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

一、理解數(shù)組:

ECMAScript數(shù)組的每一項(xiàng)可以保存任何類(lèi)型的數(shù)據(jù),可以是字符串、數(shù)值、對(duì)象、函數(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á)法時(shí),不會(huì)調(diào)用Array構(gòu)造函數(shù)。

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

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

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

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

三、棧方法與隊(duì)列方法 1、棧方法

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

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

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

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

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

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

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

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

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

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

值得注意的是sort()方法會(huì)隱式調(diào)用toString()方法;所以它比較的是字符串,但是它可以接收一個(gè)比較函數(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ù)組一個(gè)副本,然后將接收到的參數(shù)添加到這個(gè)副本的末尾,最后返回新構(gòu)建的數(shù)組。

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

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

    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、刪除:指定兩個(gè)參數(shù):要?jiǎng)h除的第一項(xiàng)的位置和要?jiǎng)h除的項(xiàng)數(shù)。

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

2、插入:指定3個(gè)參數(shù):起始位置、0(要?jiǎng)h除的項(xiàng)數(shù))、插入的項(xiàng)(可以任意多個(gè)項(xiàng))。

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

3、替換:指定3個(gè)參數(shù):起始位置、要?jiǎng)h除的項(xiàng)數(shù)、替換的項(xiàng)(可以任意多個(gè)項(xiàng))。

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

indexOf()方法:從數(shù)組開(kāi)頭向后查找項(xiàng)的位置,接收兩個(gè)參數(shù):要查找的項(xiàng)和表示查找起點(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()方法一查找到符合條件的值,就會(huì)停止查找,所以只有一個(gè)參數(shù)d的時(shí)候即從0位置開(kāi)始查找顯示位置是3,而在后面加一個(gè)位置索引4之后,也就是從e這個(gè)項(xiàng)開(kāi)始向后查找,所以顯示5。

lastIndexOf()方法:從數(shù)組末尾向后查找項(xiàng)的位置,接收兩個(gè)參數(shù):要查找的項(xiàng)和表示查找起點(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():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)每一項(xiàng)都返回true,則返回true。接收三個(gè)參數(shù):要在每一項(xiàng)上運(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/*接收三個(gè)參數(shù):數(shù)組項(xiàng)的值,該項(xiàng)在數(shù)組中的位置,數(shù)組對(duì)象本身*/){
    return (item>2);
});
alert(everyResult);//false

some():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),如果該函數(shù)對(duì)任一項(xiàng)都返回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():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(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():對(duì)數(shù)組中的每一項(xiàng)運(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():對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定函數(shù),這個(gè)方法沒(méi)有返回值。

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

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

歸并開(kāi)始時(shí),第一次迭代發(fā)生在數(shù)組的第二項(xiàng)上,也就是索引值為1,這時(shí)prev是1,cur是2。第二次迭代發(fā)生在數(shù)組的第三項(xiàng)上,也就是索引值為2,這時(shí)prev是3(因?yàn)榇藭r(shí)已經(jīng)發(fā)生過(guò)一次迭代,是前一次迭代1+2的結(jié)果),cur是3。這個(gè)過(guò)程會(huì)持續(xù)到把數(shù)組中的每一項(xiàng)都訪(fǎng)問(wèn)一遍,最后返回結(jié)果。

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

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

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

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

    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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

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

相關(guān)文章

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

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

    Towers 評(píng)論0 收藏0
  • 對(duì)類(lèi)型數(shù)組(Typed Array)與ArrayBuffer理解

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

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

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

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

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

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

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

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

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

0條評(píng)論

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