此文章用于歸納Array的所有方法
在JavaScript中,除了Object晦攒,用得最多的可能就是數(shù)組Array了跛锌。下面我們將一起來總結(jié)一下數(shù)組Array的所有方法。
首先總結(jié)一下Array
的屬性:
-
Array.length
:返回數(shù)組的長度癌蓖。
然后總結(jié)一下Array
的方法:
-
Array.from(arrayLike ,function)
:此方法接受2個參數(shù),第一個參數(shù)接受一個類數(shù)組對象婚肆,第二個參數(shù)接受一個映射函數(shù)租副。該方法是將arrayLike
轉(zhuǎn)換成真正的數(shù)組,如果有第二個參數(shù)旬痹,將會把第一個參數(shù)里的每一個元素在function
中作用一遍附井,并返回結(jié)果讨越,構(gòu)成一個新數(shù)組两残,然后返回該數(shù)組。具體操作如下:
function arr(){
return Array.from(arguments, function(num){return num*2});
}
arr(1,2,3,4);//[2, 4, 6, 8]
-
Array.isArray(obj)
:確定輸入的值是否是一個數(shù)組把跨,如果是人弓,返回true
如果不是,返回false
着逐。 -
Array.of()
:是創(chuàng)建數(shù)組的一種方法崔赌,它接受的每一個參數(shù)都將作為新構(gòu)成數(shù)組的一個元素意蛀。該方法返回構(gòu)建完成的數(shù)組。和Array()
創(chuàng)建數(shù)組有稍微不同健芭,具體如下:
Array.of(2); // [2]
Array.of(1, 2, 3); // [1, 2, 3]
Array(2); // [ , ]或者[undefined × 2]
Array(1, 2, 3); // [1, 2, 3]
最后總結(jié)Array
實例的方法县钥,也就是array.prototype
的方法:
-
concat()
:該方法用于合并2個或多個數(shù)組,不會改變原數(shù)組慈迈,返回一個新數(shù)組若贮。
var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];
arr1.concat(arr2);//["a", "b", "c", "d", "e", "f"]
arr1.concat(1,2,3)//["a", "b", "c", 1, 2, 3]
-
copyWithin(target, start = 0, end = this.length)
:該方法接受3個參數(shù),其中第一個參數(shù)為目標位置(必選)痒留,第二個是起始位置(可選)谴麦,第三個是結(jié)束位置(可選)。該方法的作用是將指定的一部分元素復制到同一個數(shù)組指定的位置替換掉伸头,并返回數(shù)組匾效。具體代碼如下:
//從第3個位置開始替換倒數(shù)第2個到倒數(shù)第1個元素,即5
[1,2,3,4,5,6].copyWithin(3,-2,-1)//[1,2,3,5,5,6]
//從第0個位置開始替換第2到第4的元素恤磷,即3,4
[1,2,3,4,5,6].copyWithin(0,2,4)//[3,4,3,4,5,6]
-
entries()
:將輸入的數(shù)組變?yōu)榈鲗ο竺婧撸墒褂?code>next()或者for of
循環(huán)。具體代碼如下:
var a = ['a', 'b', 'c'];
var iterator = a.entries();
console.log(iterator.next()); //Object {value: Array(2), done: false}
for (let e of iterator) {
console.log(e);
}
// [1, 'b']
// [2, 'c']
-
every(function)
:該方法接受一個函數(shù)作為參數(shù)扫步,該函數(shù)可以有3個參數(shù)精绎,第一個參數(shù)是當前正在處理的數(shù)組的元素,第二個參數(shù)為當前元素的索引锌妻,第三個參數(shù)為該數(shù)組本身代乃。該方法主要的作用是遍歷每一個元素,看是否每一個元素都能通過function
的測試仿粹,如果都通過搁吓,返回true
,只要有一個沒通過吭历,返回false
堕仔。具體代碼如下:
[1,2,3,4,5,6].every(function(item,index){
return item>5
})//false
[1,2,3,4,5,6].every(function(item,index){
return item>0
})//true
-
some(function)
:與every(function)
類似。只要有一個元素滿足條件晌区,返回true
摩骨,沒有一個元素滿足條件,返回false
朗若。
[1,2,3,4,5,6].some(function(item,index){
return item>5
})//true
[1,2,3,4,5,6].some(function(item,index){
return item>9
})//false
-
fill(value, start = 0, end = this.length)
:該方法接受3個參數(shù)恼五,第一個參數(shù)為填充的值,第二個參數(shù)和第3個參數(shù)與copyWithin()
類似哭懈。具體代碼如下:
//用3替換倒數(shù)第2個到倒數(shù)第1個元素灾馒,即5
[1,2,3,4,5,6].fill(3,-2,-1)//[1,2,3,4,3,6]
//用0替換第2到第4的元素,即3,4
[1,2,3,4,5,6].fill(0,2,4)//[1,2,0,0,5,6]
-
filter(function)
:該方法的function
參數(shù)與every
類似遣总,不同的地方在于睬罗,該方法返回一個通過function
測試的元素組成的新數(shù)組轨功。具體代碼如下:
[1,2,3,4,5,6].filter(function(item,index){
return item>5
})//[6]
[1,2,3,4,5,6].filter(function(item,index){
return item>2
})//[3,4,5,6]
-
find(function)
:該方法的function
參數(shù)與every
類似,不同的地方在于容达,該方法返回第一個通過function
測試的元素古涧,如果都沒通過,返回undefined
花盐。具體代碼如下:
[1,2,3,4,5,6].find(function(item,index){
return item>5
})//6
[1,2,3,4,5,6].find(function(item,index){
return item>2
})//3
-
findIndex(function)
:該方法的function
參數(shù)與every
類似蒿褂,不同的地方在于,該方法返回第一個通過function
測試的元素的索引卒暂,如果都沒通過啄栓,返回-1
。具體代碼如下:
[1,2,3,4,5,6].findIndex(function(item,index){
return item>5
})//5
[1,2,3,4,5,6].findIndex(function(item,index){
return item>2
})//2
-
forEach(function)
:該方法的function
參數(shù)與every
類似也祠,不同的地方在于昙楚,該方法沒有返回值,只是將數(shù)組中每一個元素在函數(shù)中作用一遍诈嘿。具體代碼如下:
var arr = [];
[1,2,3,4,5,6].forEach(function(item,index){
if(item>2){ arr.push(item); }
})
console.log(arr)//[3, 4, 5, 6]
-
includes(element,fromIndex = 0)
:該方法接受2個參數(shù)堪旧,第一個參數(shù)是需要尋找的元素,第二參數(shù)可選奖亚,為從什么位置開始尋找淳梦。如果找到了,返回true
昔字,如果沒找到爆袍,返回false
具體代碼如下:
var arr = [1,2,3]
arr.includes(2);//true
arr.includes(5);//false
arr.includes(2,2)//false
-
indexOf(element,fromIndex = 0)
:該方法接受2個參數(shù),第一個參數(shù)是需要尋找的元素作郭,第二參數(shù)可選陨囊,表示從什么位置開始尋找。找到了返回當前元素的位置夹攒,如果沒找到蜘醋,返回-1
具體代碼如下:
var arr = [1,2,3]
arr.indexOf(2);//1
arr.indexOf(5);//-1
arr.indexOf(2,2)//-1
-
lastIndexOf(element,fromIndex = 0)
:該方法接受2個參數(shù),第一個參數(shù)是需要尋找的元素咏尝,第二參數(shù)可選压语,表示從什么位置開始尋找。如果找到了编检,返回給定的元素最后一次出現(xiàn)的位置胎食,如果沒找到,返回-1
具體代碼如下:
var arr = [1,2,3,1]
arr.lastIndexOf(2);//3
arr.lastIndexOf(5);//-1
arr.lastIndexOf(2,2)//-1
-
join(separator = ',')
:該方法接受1個參數(shù)(可選)蒙谓,將數(shù)組的所有元素以separator
連接為字符串斥季,并返回該字符串训桶。具體代碼如下:
var a = ['a', 'b', 'c'];
a.join(); // 'a,b,c'
a.join(', '); // 'a, b, c'
a.join(' + '); // 'a + b + c'
a.join(''); // 'abc'
-
keys()
:該方法作用于entries()
類似累驮,將對象變?yōu)榭傻膶ο蠛ㄇ悖€是有所不同。具體代碼如下:
var a = ['a', 'b', 'c'];
var iterator = a.keys();
console.log(iterator.next()); //Object {value: 0, done: false}
for (let e of iterator) {
console.log(e);
}
//1
//2
-
map(function)
:該方法的function
參數(shù)與every
類似谤专,不同的地方在于該方法返回一個由function
作用之后的新數(shù)組躁锡,該方法。具體代碼如下:
[1,2,3,4,5,6].map(function(item,index){
return item*2
})//[2, 4, 6, 8, 10, 12]
-
pop()
:該方法會刪除最后一個元素并返回該元素置侍,被刪除元素的數(shù)組長度減少1
映之。具體代碼如下:
var arr = [1, 2, 3];
arr.pop();//3
console.log(arr); // [1, 2]
-
push(element)
:該方法會在最后添加一個元素并返回該數(shù)組的length
。具體代碼如下:
var arr = [1, 2, 3];
arr.push(4);//4
console.log(arr); // [1,2,3,4]
-
reduce(function)
:該方法接受一個function
作為參數(shù)蜡坊,把數(shù)組的元素依次放入function
中杠输,得到的結(jié)果作為也作為參數(shù)傳入function
,一直到所有元素作用完畢秕衙,返回最終結(jié)果蠢甲。具體代碼如下:
var arr = [1,2,3,4,5,6]
arr.reduce(function(element1,element2){
return element1+element2
})//21
-
reduceRight(function)
:該方法與reduce()
類似,只不過執(zhí)行順序是從右往左据忘。具體代碼如下:
var arr = [1,2,3,4,5,6]
arr.reduceRight(function(element1,element2){
return element1+element2
})//21
-
reverse()
該方法是將數(shù)組中的元素順序反轉(zhuǎn)鹦牛,并返回該數(shù)組。具體代碼如下:
var arr = [1,2,3,4,5,6]
arr.reverse()
-
shift()
:該方法和pop()
類似勇吊,只不過pop
刪除最后一個元素曼追,shift()
刪除第一個元素。
var arr = [1, 2, 3];
arr.shift();//1
console.log(arr); // [2, 3]
-
slice(start = 0,end=this.length)
:該方法接受2個參數(shù)汉规,一個開始的位置礼殊,一個結(jié)束的位置(不包括結(jié)束的位置)。選擇數(shù)組的這一部分淺拷貝到一個新數(shù)組對象里面针史,并返回新數(shù)組膏燕。原數(shù)組不會改變。具體代碼如下:
var arr = [1,2,3,4,5,6]
//選擇第2和第4悟民,即3,4
arr.slice(2,4)//[3,4]
console.log(arr)// [1,2,3,4,5,6]
-
splice(start = 0, deleteCount, element ...)
:該方法接受3個參數(shù)坝辫,第一個參數(shù)是修改的開始位置,第二個參數(shù)是可選的射亏,表示要移除數(shù)組的個數(shù)近忙,第3個參數(shù)是加入的元素。該方法返回被刪除的數(shù)組智润,并且原數(shù)組會被修改及舍。具體代碼如下:
var arr = [1,2,3,4,5,6,7,8]
//從第2開始,刪除4個元素窟绷,并添加moonburn字符串
arr.splice(2,4,'moonburn')//[3,4,5,6]
console.log(arr)// [1,2,'moonburn',7,8]
-
sort(compareFunction)
:該方法接受一個參數(shù)(可選)锯玛。如果不輸入?yún)?shù),會自發(fā)的給數(shù)組排序,默認排序順序是根據(jù)字符串Unicode碼點攘残。也可以加入compareFunction
拙友,自己排序。具體代碼如下:
var arr = [1,20,3,40,5,60]
arr.sort(function(element1,element2){
return element1>element2
})
console.log(arr)// [1, 3, 5, 20, 40, 60]
-
toLocaleString()
:數(shù)組的toLocaleString()
會將所有的元素都作用一遍toLocaleString()
歼郭,并拼接為字符串遗契。具體如下:
var arr = [123,new Date(),'string']
arr.toLocaleString()//"123,2017-6-8 11:04:50,string"
-
toString()
和toLocaleString()
類似,只是不帶地域特色病曾。具體如下:
var arr = [123,new Date(),'string']
arr.toString()//"123,Thu Jun 08 2017 11:08:24 GMT+0800 (中國標準時間),string"
-
unshift(element····)
:將一個或多個元素添加到數(shù)組的開頭牍蜂。返回新數(shù)組的length
具體代碼如下:
var arr = [1,2,3,4];
arr.unshift('a','b');//6
console.log(arr);//["a", "b", 1, 2, 3, 4]