創(chuàng)建數(shù)組
- 使用Array構(gòu)造函數(shù)
var a = new Array()
var b = new Array(5); //創(chuàng)建長(zhǎng)度為5的數(shù)組
var c = new Array("a","b","c");
- 使用數(shù)組字面量表示法
var a = [];
var b = [5]; //創(chuàng)建一個(gè)含數(shù)字5的數(shù)組
var c = ["a","b","c"];
數(shù)組屬性
length
表示數(shù)組的長(zhǎng)度
var colors = ["red","green","blue","black"];
colors.length //4
length
屬性并不是只讀的睡蟋,通過(guò)設(shè)置該值可以從數(shù)組末尾刪除項(xiàng)或向數(shù)組中添加項(xiàng)
var colors = ["red","green","blue","black"];
colors.length = 2; //colors:["red","green"]
colors.length = 4; //colors:["red","green",undefined,undefined]
數(shù)組方法
-
棧第岖、隊(duì)列方法
-
push(item...)
向數(shù)組中添加元素,返回修改后數(shù)組的長(zhǎng)度
var numbers= [1,2,3,4];
numbers.push(5) //5 numbers:[1,2,3,4,5]
numbers.push(6,7) //7 numbers:[1,2,3,4,5,6,7]
-
pop()
從數(shù)組末尾移除一項(xiàng),減少數(shù)組的長(zhǎng)度您炉,返回移除的項(xiàng)
var numbers= [1,2,3,4];
numbers.pop() //4 numbers:[1,2,3]
-
unshift(item...)
向數(shù)組前端添加任意項(xiàng)驻粟,返回** 修改后數(shù)組的長(zhǎng)度 **
var numbers= [1,2,3,4];
numbers.unshift(5) //5 numbers:[5,1,2,3,4]
numbers.unshift(6,7) //7 numbers:[6,7,5,1,2,3,4]
-
shift()
移除數(shù)組第一項(xiàng)饭宾,減少數(shù)組的長(zhǎng)度批糟,返回移除的項(xiàng)
var numbers= [1,2,3,4];
numbers.shift() //1 numbers:[2,3,4]
-
排序方法
-
reverse()
反轉(zhuǎn)數(shù)組項(xiàng)的順序,改變?cè)瓟?shù)組
var numbers= [1,2,3,4];
numbers.reverse() //[4,3,2,1] numbers:[4,3,2,1]
-
sort()
默認(rèn)情況下看铆,即無(wú)參數(shù)情況徽鼎,sort()
方法按升序排列數(shù)組。該方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的tostring()
方法弹惦,然后比較字符串否淤,因此即使數(shù)組中每一項(xiàng)都是數(shù)值,sort()
方法比較的也是字符串棠隐。
var numbers= [1,15,5,10];
numbers.sort() //[1, 10, 15, 5] numbers:[1, 10, 15, 5]
sort()
方法可以接受一個(gè)比較函數(shù)作為參數(shù)石抡。其中比較函數(shù)接受兩個(gè)參數(shù),如果兩個(gè)參數(shù)排序不需要交換位置則返回負(fù)數(shù)助泽,如果需要交換位置則返回一個(gè)正數(shù)啰扛,如果兩個(gè)參數(shù)相等則返回0。
var numbers= [1,15,5,10];
function compare(val1,val2){
if(val1 < val2){
return -1;
}
else if(val1 > val2){
return 1;
}
else{
return 0;
}
}
numbers.sort(compare) //[1, 5, 10,15] numbers:[1, 5, 10,15]
-
操作嗡贺、位置方法
-
concat()
其參數(shù)可以是一個(gè)或多個(gè)項(xiàng)隐解,也可以是一個(gè)或多個(gè)數(shù)組。創(chuàng)建一個(gè)當(dāng)前數(shù)組的副本诫睬,然后在數(shù)組末尾添加參數(shù)項(xiàng)煞茫,并返回新的數(shù)組,原數(shù)組不變
var numbers= [1,2,3,4];
numbers.concat(5,[6,7]) //[1,2,3,4,5,6,7] numbers:[1,2,3,4]
-
slice()
獲取截取數(shù)組摄凡,如果是一個(gè)參數(shù)续徽,則獲取從該參數(shù)位置開始到數(shù)組結(jié)束所有值,如果有兩個(gè)參數(shù)架谎,則獲取從起始值位置到結(jié)束值位置的值(不包括結(jié)束值位置項(xiàng))炸宵,返回新的數(shù)組。原數(shù)組不變
如果結(jié)束值小于起始位置則返回空數(shù)組谷扣。
var numbers= [1,2,3,4];
numbers.slice(2) //[3,4] numbers:[1,2,3,4]
numbers.slice(1,3) //[2,3] numbers:[1,2,3,4]
** 注意:** * 如果參數(shù)中存在負(fù)數(shù)土全,則將參數(shù)值加上數(shù)組長(zhǎng)度來(lái)計(jì)算。如:*
var numbers= [1,2,3,4];
numbers.slice(-1) //[4] numbers:[1,2,3,4]
numbers.slice(-4,-2) //[1,2] numbers:[1,2,3,4]
-
splice()
返回刪除項(xiàng)組成的數(shù)組会涎,原數(shù)組被改變- 刪除 :從指定位置刪除指定項(xiàng)數(shù)
splice(0,3)
表示刪除數(shù)組的[0][1][2]位置的三項(xiàng) - 插入 : 從指定位置刪除0項(xiàng)裹匙,再添加項(xiàng)
splice(1,0,3,4)
表示從數(shù)組的第[1]項(xiàng)開始插入3,4兩個(gè)值 - 替換 :從指定位置刪除指定項(xiàng)數(shù)末秃,再添加項(xiàng)
splice(1,2,3,4)
表示從數(shù)組[1][2]位置上的值被替換成3概页,4兩個(gè)值
- 刪除 :從指定位置刪除指定項(xiàng)數(shù)
var numbers= [1,2,3,4];
numbers.splice(1,2) //[2,3] numbers:[1,4]
numbers.splice(1,0,2,3,4,5) //[] numbers:[1,2,3,4,5,4]
numbers.splice(2,2,4,5) //[3,4] numbers:[1,2,4,5,5,4]
4. `indexOf()`從前向后查找,接受兩個(gè)參數(shù):查找的項(xiàng)和查找的起點(diǎn)位置(可選)练慕,默認(rèn)從數(shù)組的起始位置向后查找惰匙,返回**索引值**
```javascript
var numbers= [1,2,3,4,4,5,3,1,2];
numbers.indexOf(2) //1 numbers:[1,2,3,4,4,5,3,1,2]
numbers.indexOf(2,4) //8 numbers:[1,2,3,4,4,5,3,1,2]
-
lastIndexOf()
從后向前查找技掏,接受兩個(gè)參數(shù):查找的項(xiàng)和查找的起點(diǎn)位置(可選),默認(rèn)從數(shù)組的結(jié)束位置向前查找项鬼,返回索引值
var numbers= [1,2,3,4,4,5,3,1,2];
numbers.lastIndexOf(2) //8 numbers:[1,2,3,4,4,5,3,1,2]
numbers.lastIndexOf(4,3) //3 numbers:[1,2,3,4,4,5,3,1,2], 從[3]位向前查找
-
遍歷方法
-
every(fn)
對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)哑梳,如果該函數(shù)對(duì)每一項(xiàng)都返回true,則返回true
var numbers= [1,2,3,4,5];
numbers.every(function(item,index,array){
return (item>0);
}) //true
numbers.every(function(item,index,array){
return (item>2);
}) //false
-
filter(fn)
對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),返回該函數(shù)會(huì)返回true的項(xiàng)組成的數(shù)組
var numbers= [1,2,3,4,5];
numbers.filter(function(item,index,array){
return (item>2);
}) //[3,4,5]
-
forEach(fn)
對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)绘盟,沒有返回值 -
map(fn)
對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù)鸠真,返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組
var numbers= [1,2,3,4,5];
numbers.map(function(item,index,array){
return (item+10);
}) //[11,12,13,14,15]
-
some(fn)
對(duì)數(shù)組中的每一項(xiàng)運(yùn)行給定的函數(shù),如果該函數(shù)對(duì)任一項(xiàng)返回true,則返回true
var numbers= [1,2,3,4,5];
numbers.some(function(item,index,array){
return (item>3);
}) //true
-
歸并方法
以下兩個(gè)方法都接受兩個(gè)參數(shù)龄毡,一個(gè)是在數(shù)組每一項(xiàng)上調(diào)用的函數(shù)吠卷,另一個(gè)可選參數(shù)是作為歸并基礎(chǔ)的初始值。其中作為參數(shù)的函數(shù)接受4個(gè)參數(shù):前一個(gè)值沦零、當(dāng)前值祭隔、項(xiàng)和索引和數(shù)組對(duì)象。這個(gè)函數(shù)返回的任何值都會(huì)作為第一個(gè)參數(shù)自動(dòng)傳給下一項(xiàng)
-
reduce(fn)
從頭開始遍歷 -
reduceRight(ffn)
從尾開始遍歷
var numbers= [1,2,3,4,5];
numbers.reduce(function(pre,cur,index,array){
return pre+cur;
}) //15 對(duì)數(shù)組求和
numbers.reduce(function(pre,cur,index,array){
return pre+cur;
},10) //25 以10為基數(shù)對(duì)求數(shù)組求和