摘要:接收三個參數(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); //a2、隊列方法
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(value1五、操作方法value2){ 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
摘要:但是,我們可以借用類數(shù)組方法不難看出,此時的在調(diào)用數(shù)組原型方法時,返回值已經(jīng)轉(zhuǎn)化成數(shù)組了。很多時候,深入看看源代碼也會讓你對這個理解的更透徹。的前端樂園原文鏈接深入理解類數(shù)組 起因 寫這篇博客的起因,是我在知乎上回答一個問題時,說自己在學(xué)前端時把《JavaScript高級程序設(shè)計》看了好幾遍。于是在評論區(qū)中,出現(xiàn)了如下的對話:showImg(https://segmentfault.c...
摘要:類型化數(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ù)組做了很多...
摘要:方法由于構(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....
摘要:方法由于構(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....
摘要:在可迭代對象上使用所有數(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ù)組...
閱讀 841·2021-09-22 15:18
閱讀 1197·2021-09-09 09:33
閱讀 2766·2019-08-30 10:56
閱讀 1203·2019-08-29 16:30
閱讀 1499·2019-08-29 13:02
閱讀 1471·2019-08-26 13:55
閱讀 1653·2019-08-26 13:41
閱讀 1950·2019-08-26 11:56