(一)操作方法
push: 從數(shù)組末尾添加項(xiàng),返回?cái)?shù)組長(zhǎng)度
unshift : 從數(shù)組頭添加項(xiàng),返回?cái)?shù)組長(zhǎng)度
pop : 從數(shù)組末尾刪除項(xiàng),返回被移除的項(xiàng)
shift : 從數(shù)組頭刪除項(xiàng),返回被移除的項(xiàng)
concat : 組合兩個(gè)數(shù)組,原來的數(shù)組不會(huì)被改變
slice : 接受一個(gè)或兩個(gè)參數(shù),從數(shù)組中截取部分項(xiàng),返回新的數(shù)組,原來的數(shù)組不會(huì)被改變
注意: 如果結(jié)束位置小于初始位置則返回空的數(shù)組;如果參數(shù)為負(fù)值,則位置是 參數(shù)+數(shù)組長(zhǎng)度
splice => 有三種基本用法:
- 刪除項(xiàng): 第一個(gè)參數(shù)表示開始刪除項(xiàng)的位置,第二個(gè)參數(shù)表示要?jiǎng)h除多少項(xiàng)
- 插入項(xiàng): 第一個(gè)參數(shù)表示開始刪除項(xiàng)的位置,第二個(gè)參數(shù)表示要是出多少項(xiàng)(這里是0,表示不刪除),第三個(gè)參數(shù)表示要插入的項(xiàng),如果要插入多個(gè)項(xiàng),可以添加第四個(gè),第五個(gè)參數(shù)
- 替換項(xiàng): 第一個(gè)參數(shù)表示開始刪除項(xiàng)的位置,第二個(gè)參數(shù)表示要?jiǎng)h除多少項(xiàng),第三個(gè)參數(shù)表示要替換的項(xiàng),如果替換的項(xiàng)有多個(gè),同上。
(二)排序
sort => 先把數(shù)組的每個(gè)值用 toString()方法轉(zhuǎn)成字符串,然后再比較
所以要想得到正確的順序,需要給sort傳遞一個(gè)比較函數(shù),推薦一個(gè)比較常用的比較函數(shù):
function compare(v1,v2){
return v2 - v1
}
用法:sort(compare)
(三)位置
indexOf => 查找某個(gè)項(xiàng)在數(shù)組中的位置,從頭查詢。
lastIndexOf => 查找某個(gè)項(xiàng)在數(shù)組中的位置,從末尾查詢。
以上兩個(gè)方法都接受兩個(gè)參數(shù),第一個(gè)參數(shù)表示要查詢的項(xiàng),第二個(gè)參數(shù)表示開始查詢位置(可選)
(四)迭代方法
五個(gè)迭代方法接受兩個(gè)參數(shù),一個(gè)是要數(shù)組對(duì)象,一個(gè)是運(yùn)行在數(shù)組每一項(xiàng)上的函數(shù)
-
every()=> 如果函數(shù)每一項(xiàng)都返回true,則返回值為true
var numbers = [1,2,3,4]
var result = numbers.every(function(item, index, array){
return (item > 2)
})
console.log(result) // false
2.some() => 如果函數(shù)中任一項(xiàng)返回true,則返回值為true
var numbers = [1,2,3,4]
var result = numbers.some(function(item, index, array){
return (item > 2)
})
console.log(result) // true
3.filter() => 函數(shù)中返回值為true的項(xiàng)組成新數(shù)組
var numbers = [1,2,3,4]
var result = numbers.filter(function(item, index, array){
return (item > 2)
})
console.log(result) // [3,4]
4.map() => 每次調(diào)用函數(shù)的結(jié)果組成新的數(shù)組
var numbers = [1,2,3,4]
var result = numbers.map(function(item, index, array){
return item * 2
})
console.log(result) // [2,4,6,8]
5.forEach() => 這個(gè)方法沒有返回值
var numbers = [1,2,3,4]
numbers.map(function(item, index, array){
// 執(zhí)行某些操作
})
6.reduce()和reduceRight() ,其實(shí)這兩個(gè)方法不是迭代方法,為了方便我整理到了一起,解釋起來比較麻煩,看列子會(huì)明白:
// 計(jì)算一個(gè)數(shù)組的求和
var arr = [1,2,3,4]
var sum = arr.reduce(function(prev,cur,index,array){
return prev + cur
})
console.log(sum) // 10