1. 程式人生 > >JavaScript中Array方法總覽

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(),只是從陣列末尾開始進行累計。不改變原陣列