一、迭代方法
ES5為數(shù)組定義了5個迭代方法,這些方法大大方便了處理數(shù)組的任務(wù):
1、every
對數(shù)組每一項(xiàng)進(jìn)行給定函數(shù),如果每一項(xiàng)都返回 true, 則返回 true:
var arr = [1,2,3,4,5];
var evertResult = arr.every(function(item, index, array) {
? ? return item > 0;
})
console.log(everyResult);? ? // true
2、some
對數(shù)組的每一項(xiàng)進(jìn)行給定函數(shù),如果任意一項(xiàng)返回 true,則返回 true:
var arr = [1,2,3];
var some = arr.some(function(item, index, array) {
? ? return item > 1
})
console.log(some);? ? // true
3、filter
對數(shù)組的每一項(xiàng)進(jìn)行給定函數(shù), 返回該函數(shù)會返回 true 的項(xiàng)組成的數(shù)組:
var arr = [1,2,3];
var filter = arr.filter(function(item, index , array) {
? ? return item > 2;
})
console.log(filter);? ? // [3]
4、map
對數(shù)組中每一項(xiàng)進(jìn)行給定函數(shù),返回每次函數(shù)調(diào)用的結(jié)果組成的數(shù)組:
var arr = [1,2,3];
var map = arr.map(function(item, index, array) {
? ? return item*2;
})
console.log(map);? ? //[2,3,6]
5、forEach
對數(shù)組每一項(xiàng)進(jìn)行給定函數(shù),沒有返回值,和 for 循環(huán)類似:
var arr = [1,2,3];
arr.forEach(function(item, index, array) {
? ? if(item != 2) {
? ? ? ? array.splice(index, 1, 2)
????}
})
console.log(array);? ? // [2,2,2]
二、歸并方法
ES5新增了兩個歸并數(shù)組的方法:reduce() 和 reduceRight()。這兩個方法迭代數(shù)組所有項(xiàng),然后構(gòu)建一個最終返回的值。
var arr = [1,2,3];
var result = arr.reduce(function(prev, cur, index, array) {
? ? return prev + cur
})
console.log(result);? ? // 6
reduce() 函數(shù)接受四個參數(shù):前一個值、當(dāng)前值、index和數(shù)組對象。這個函數(shù)返回的任何值都會最為第一個參數(shù)自動傳給下一項(xiàng),第一次迭代發(fā)生在第二項(xiàng)上,因此第一個參數(shù)是數(shù)組的第一項(xiàng),第二個參數(shù)是數(shù)組的第二項(xiàng)。
三、監(jiān)測數(shù)組
ES3的方法:instanceof
var arr = [1,2,3];
arr instanceof Array? ? // true
ES5的方法:Array.isArray
var arr = [1,2,3];
Array.isArray(arr);? ? // true
四、轉(zhuǎn)換方法
1、toLocaleString()、toString()、valueof()
2、join() 將數(shù)組轉(zhuǎn)換為字符串,且用分隔符分割
var arr = [1,2,3];
arr.join('/');? ? //1/2/3
五、棧方法
棧方法是指Last-In-First-Out后進(jìn)先出
1、push() 從數(shù)組末尾添加
2、pop() 從數(shù)組末尾移除
六、隊列方法
隊列方法是First-In-First-Out先進(jìn)先出
shift() 從數(shù)組前端移除
unshift()? ? 從數(shù)組前端添加
七、重排序方法
reverse()? ? 反轉(zhuǎn)數(shù)組
sort()? ? 排序
var arr = [3,2,1];
arr.sort(function(a, b){
? ? return a-b;? ? // [1,2,3]
})
八、操作方法
1、concat() 用于復(fù)制或從尾部添加【創(chuàng)建新數(shù)組】
var arr = [1,2,3];
var arr1 = arr.concat(4);
console.log(arr);? ? // [1,2,3]
console.log(arr1);? ? // [1,2,3,4]
2、slice() 用于復(fù)制或截取數(shù)組【創(chuàng)建新數(shù)組】
一個參數(shù)時返回指定位置到尾部的數(shù)組;
兩個參數(shù)時返回指定位置到結(jié)束位置之前但不包括結(jié)束位置的數(shù)組;
var arr = [1,2,3];
var arr1 = arr.slice();? ? // [1,2,3]
var arr2 = arr.slice(1);? ? // [2,3]
var arr3 = arr.slice(1,3);? ? // [2,3]
3、splice() 用于刪除、插入、替換,最強(qiáng)大的數(shù)組方法
刪除:可以刪除任意數(shù)量的項(xiàng),需要兩個參數(shù):要刪除第一項(xiàng)的位置和要刪除的項(xiàng)數(shù)。返回新數(shù)組為刪除項(xiàng)組成的數(shù)組。
var arr = [1,2,3];
arr.splice(0, 1);? ? //[1]
console.log(arr);? ? //[2,3]
插入和替換:至少三個參數(shù),第一個是起始位置,第二個是要刪除項(xiàng)的數(shù)量,第三個及以后是是要插入或替換的值。
var arr = [1,2,3];
arr.splice(0,3,4);? ? // [1,2,3]
console.log(arr);? ? // [4]
九、位置方法
indexOf() / lastIndexOf()
var arr = [1,2,3];????
arr.indexOf(3);? ? // 2