JavaScript中Array方法總覽
title: JavaScript中Array方法總覽
toc: true
date: 2018-10-13 12:48:14
push(x)
將x新增到陣列最後,可新增多個值,返回陣列長度。改變原陣列
var arr = [1,2,3];
arr.push(4); // 返回4, arr變為[1, 2, 3, 4]
arr.push(5,6); // 返回6, arr變為[1, 2, 3, 4, 5, 6]
unshift(x)
將x新增到陣列開頭,可新增多個值,返回陣列長度。改變原陣列
var arr = [4,5,6]; arr.push(3); // 返回4, arr變為[3, 4, 5, 6] arr.push(1,2); // 返回6, arr變為[1, 2, 3, 4, 5, 6]
pop()
刪除陣列最後一個元素,返回被刪除元素。改變原陣列
shift()
刪除陣列第一個元素,返回被刪除元素。改變原陣列
join(x)
使用x將陣列連線為字串,x可以為任意物件。不改變原陣列
reverse()
反轉陣列。改變原陣列
slice(start,end)
返回索引start到索引end(不包含end)的新陣列。不改變原陣列
splice(index, count, value)
從索引為index處刪除count個元素,插入value,value可為多個值。改變原陣列
sort()
對陣列排序。改變原陣列
var a = [11,9,21,31]; a.sort(); // a為 (4) [11, 21, 31, 9]
sort排序是根據位來進行排序,而非值的大小,先比較第一位,數字在前,字母在後,若相同則比較後面位。
a = [31, 22, 27, 1, 9]
a.sort((a, b)=>{
return a - b
})
console.log(a) // [1, 9, 22, 27, 31] 按數值大小正序排列
toString()
將陣列中的元素用逗號拼接成字串。不改變原陣列
toLocaleString()
將陣列中的元素使用各自的toLocaleString()
轉換後用逗號拼接成字串。不改變原陣列
var a = [1, new Date(), 'a', {m: 1}]; var result = a.toLocaleString(); console.log(result); // '1,2018/10/3 下午9:23:59,a,[object Object]'
indexOf(value)
從索引0開始查詢value,如果有,返回匹配到的第一個索引,否則返回-1。不改變原陣列
lastIndexOf(value)
從最後開始查詢value,如果有,返回匹配到的第一個索引,否則返回-1。不改變原陣列
concat(value)
將原陣列和value拼接成新陣列。不改變原陣列
var a = [1, 2], b = [3, 4], c = 5;
var result = a.concat(b, c);
console.log(result); // [1, 2, 3, 4, 5]
console.log(a); // [1, 2]
b = [3, [4]];
result = a.concat(b, c);
console.log(result); // [1, 2, 3, [4], 5] concat對於巢狀陣列無法拉平
console.log(a); // [1, 2]
fill(value, start, end)
使用給定value填充陣列,從索引start開始end結束,不包含end。改變原陣列
var a = [1, 2, 3, 4, 5];
var result = a.fill(0, 2, 3);
console.log(result); // [1, 2, 0, 4, 5]
console.log(a); // [1, 2, 0, 4, 5]
a = [1, 2, 3, 4, 5];
console.log(a.fill(1)); // [1, 1, 1, 1, 1] 引數一個時,將該引數覆蓋填充到陣列每一項
a = [1, 2, 3, 4, 5];
console.log(a.fill(1, 2)); // [1, 2, 1, 1, 1] 只有start時,從索引start開始填充到陣列末位
a = [1, 2, 3, 4, 5];
console.log(a.fill(1, -2)); // [1, 2, 3, 1, 1] 只有start且為負數時,從倒數|start|位開始填充到陣列末位
flat()
將二維陣列變為一位陣列,只能將第二層巢狀陣列“拉平”。不改變原陣列
map(fn)
對陣列中每一個元素執行fn函式,返回所有返回值組成的陣列。不改變原陣列
flatMap()
相當於flat和map的結合。不改變原陣列
copyWithin(target, start, end)
將陣列從start到end索引的元素(不包含end)複製到target開始的索引位置。改變原陣列
let a = [1, 2, 3, 4, 5]
let result = a.copyWithin(0, 3, 5)
console.log(result) // [4, 5, 3, 4, 5]
console.log(a) // [4, 5, 3, 4, 5] 索引3到5的元素為4和5,複製到從0開始的位置,替換掉了1和2
a = [1, 2, 3, 4, 5]
console.log(a.copyWithin(2)) // [1, 2, 1, 2, 3] 引數只有一個時,start預設為0,end預設為陣列長度-1
entries()
返回一個新的Array迭代器物件,可用for...of遍歷。不改變原陣列
每一次next返回[index,value]
keys()
返回一個新的Array迭代器物件,可用for...of遍歷。不改變原陣列
每一次next返回{value,done}
value實際為陣列的索引:0,1,2,...
keys()
返回一個新的Array迭代器物件,可用for...of遍歷。不改變原陣列
每一次next返回{value,done}
value實際為陣列中每一項的值
forEach()
遍歷陣列。不改變原陣列
var a = [1,2,3,4,5];
var result = a.forEach(function(value, index) {
console.log(value, index);
// 1 0
// 2 1
// 3 2
// 4 3
// 5 4
});
console.log(result); // undefined
console.log(a); // [1, 2, 3, 4, 5]
every(fn)
判斷是否陣列中所有元素都滿足fn,返回true或false。不改變原陣列
some(fn)
判斷是否陣列有元素滿足fn,返回true或false。不改變原陣列
filter(fn)
返回陣列中滿足fn的所有元素(以新陣列的形式)。不改變原陣列
find(fn)
返回陣列中第一個滿足fn函式中條件的元素值,沒有則返回undefined。不改變原陣列
findIndex(fn)
返回陣列中第一個滿足fn函式中條件的元素索引,沒有則返回undefined。不改變原陣列
includes(value)
返回一個布林值,表示陣列中是否包含value。不改變原陣列
reduce()
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
相當於一個函式累加器,接受一個回撥函式的結果,然後將前一次的函式結果再和下一次的資料再次執行此回撥函式。
不改變原陣列
reduceRight()
類似於reduce()
,只是從陣列末尾開始進行累計。不改變原陣列