摘要:接收三個(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); //a2、隊(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(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ù)組一個(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
摘要:但是,我們可以借用類(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...
摘要:類(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ù)組做了很多...
摘要:方法由于構(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....
摘要:方法由于構(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....
摘要:在可迭代對(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ù)組...
閱讀 895·2021-09-22 15:18
閱讀 1260·2021-09-09 09:33
閱讀 2818·2019-08-30 10:56
閱讀 1262·2019-08-29 16:30
閱讀 1555·2019-08-29 13:02
閱讀 1513·2019-08-26 13:55
閱讀 1701·2019-08-26 13:41
閱讀 2015·2019-08-26 11:56