JavaScript陣列方法大全
建立陣列
var arr = new Array(); // 建立一個陣列
var arr = new Array([size]); // 建立一個陣列並指定長度,注意不是上限,是長度
var arr = new Array(element0, element1, ..., elementn); // 建立一個陣列並賦值
var arr = [] // 字面量建立陣列
var arr = Array.of(element0, element1, ..., elementn) // 將一組值轉換成陣列
Array.from()
將偽陣列變成陣列,就是隻要有length的屬性就可以轉成陣列
let name = "javascript";
console.log(name.length); // 10
let arr = Array.from(name);
console.log(arr); // [ 'j', 'a', 'v', 'a', 's', 'c', 'r', 'i', 'p', 't' ]
Array.of()
將一組值轉換成陣列,類似於宣告陣列
let arr = Array.of(10);
let arr2 = Array.of("hello", "world");
console.log(arr); // [ 10 ]
console.log(arr2); // [ 'hello', 'world' ]
棧方法
後進先出
push()
可以接收任意數量的引數,把它們逐個新增到陣列末尾,並返回修改後陣列的長度
let arr = [1, 2, 3];
arr.push(4);
console.log(arr); // [ 1, 2, 3, 4 ]
console.log(arr.length); // 4
pop()
從陣列末尾移除最後一項,減少陣列的length值,然後返回移除的項
let arr = [1, 2, 3];
let delVal = arr.pop();
console.log(arr); // [ 1, 2]
console.log(delVal); // 3
佇列方法
先進先出
shift()
移除陣列中的第一個項並返回該項,同時將陣列長度減1
let arr = [1, 2, 3];
let delVal = arr.shift();
console.log(delVal); // 1
console.log(arr); // [ 2, 3 ]
console.log(arr.length); // 2
unshift()
在陣列前端新增任意個項並返回新陣列的長度
let arr = [1, 2, 3];
let arrLength = arr.unshift(0);
console.log(arrLength); // 4
console.log(arr); // [ 0, 1, 2, 3 ]
排序方法
reverse()
反轉陣列項的順序
let arr = [1, 2, 3];
arr.reverse();
console.log(arr); // [ 3, 2, 1 ]
sort()
從小到大排序,但它的排序方法是根據陣列轉換字串後來排序的
let arr = [1, 5, 10, 15];
console.log(arr.sort()); // [ 1, 10, 15, 5 ] 原因:它們比較的是轉換的字串值
// 從小到大排序
console.log(arr.sort(compare)); // [ 1, 5, 10, 15 ]
function compare(value1, value2) {
if (value1 < value2) {
return -1;
} else if (value1 > value2) {
return 1;
} else {
return 0;
}
}
操作方法
concat()
可以基於當前陣列中的所有項建立一個新陣列,不會影響原陣列的值
let arr = [1, 2, 3];
let newArr = arr.concat([4, 5, 6], [7, 8, 9]);
console.log(newArr); // [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
console.log(arr); // [1, 2, 3]
slice()
它能夠基於當前陣列中的一或多個項建立一個新陣列
-
slice()
方法可以接受一或兩個引數,即要返回項的起始和結束位置 - 在只有一個引數的情況下,
slice()
方法返回從該引數指定位置開始到當前陣列末尾的所有項。 - 如果有兩個引數,該方法返回起始和結束位置之間的項——但不包括結束位置的項。
- 注意,
slice()
方法不會影響原始陣列
let arr = [1, 2, 3, 4];
let newArr = arr.slice(1, 2);
console.log(newArr); // [ 2 ]
let newArr2 = arr.slice(1);
console.log(newArr2); // [ 2, 3, 4 ]
splice()
刪除:
可以刪除任意數量的項,只需指定2個引數:要刪除的第一項的位置和要刪除的項數。例如,splice(0,2)會刪除陣列中的前兩項。
let arr = [1, 2, 3, 4];
arr.splice(1, 2);
console.log(arr); // [ 1, 4 ]
插入
可以向指定位置插入任意數量的項,只需提供3個引數:起始位置、0(要刪除的項數)和要插入的項。如果要插入多個項,可以再傳入第四、第五,以至任意多個項。例如,splice(2,0,“red”,“green”)會從當前陣列的位置2開始插入字串"red"和"green"。
let arr = [1, 2, 3, 4];
arr.splice(1, 0, "java", "script");
console.log(arr); // [ 1, 'java', 'script', 2, 3, 4 ]
替換
可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定3個引數:起始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等。例如,splice (2,1,“red”,“green”)會刪除當前陣列位置2的項,然後再從位置2開始插入字串"red"和"green"。
let arr = [1, 2, 3, 4];
arr.splice(1, 1, "java", "script");
console.log(arr); // [ 1, 'java', 'script', 3, 4 ]
arr.fill(target, start, end)
使用給定的值,填充一個陣列,ps:填充完後會改變原陣列
- target – 待填充的元素
- start – 開始填充的位置-索引
- end – 終止填充的位置-索引(不包括該位置)
let arr = [1, 2, 3, 4];
let arr2 = [5, 6, 7, 8];
// 全部填充5
arr.fill(5);
console.log(arr); // [ 5, 5, 5, 5 ]
// 從索引為1到3填充9
arr2.fill(9, 1, 3);
console.log(arr2); // [ 5, 9, 9, 8 ]
Array.isArray(arr)
判斷傳入的值是否為陣列
let arr = [];
let obj = {};
console.log(Array.isArray(arr)); // true
console.log(Array.isArray(obj)); // false
copyWithin(target, start, end)
在當前陣列內部,將制定位置的陣列複製到其他位置,會覆蓋原陣列項,返回當前陣列
引數:
- target --必選 索引從該位置開始替換陣列項
- start --可選 索引從該位置開始讀取陣列項,預設為0,如果為負值,則從右往左讀。
- end --可選 索引到該位置停止讀取的陣列項,預設是Array.length,如果是負值,表示倒數
let arr = [1, 2, 3, 4, 5, 6];
console.log(arr.copyWithin(2, 0)); // [1, 2, 1, 2, 3, 4]
console.log(arr.copyWithin(2, 0, 4)); // [ 1, 2, 1, 2, 1, 2 ]
位置方法
indexOf()和lastIndexOf()
這兩個方法都接收兩個引數:要查詢的項和(可選的)表示查詢起點位置的索引。其中,indexOf()
方法從陣列的開頭(位置0)開始向後查詢,lastIndexOf()
方法則從陣列的末尾開始向前查詢。
let arr = [1, 2, 3, 2, 1];
// 從0開始查詢值為2的位置
console.log(arr.indexOf(2)); // 1
// 從索引為2開始查詢值為2的位置
console.log(arr.indexOf(2, 2)); // 3
// 倒敘查詢值為2的位置
console.log(arr.lastIndexOf(2)); // 3
// 倒敘查詢值為2的位置
console.log(arr.lastIndexOf(2, 2)); // 1
find()
陣列例項的find方法,用於找出第一個符合條件的陣列成員。它的引數是一個回撥函式,所有陣列成員依次執行該回撥函式,直到找出第一個返回值為true的成員,然後返回該成員。如果沒有符合條件的成員,則返回undefined。
let arr = [1, 2, 3, 4, 5, 6];
let index = arr.find(val => val === 3);
let index2 = arr.find(val => val === 100);
console.log(index); // 3
console.log(index2); // undefined
findIndex()
和陣列例項的findIndex方法的用法與find方法非常類似,返回第一個符合條件的陣列成員的位置,如果所有成員都不符合條件,則返回-1。
let arr = [1, 2, 3, 4, 5, 6];
let index = arr.findIndex(val => val === 3);
let index2 = arr.findIndex(val => val === 100);
console.log(index); // 2
console.log(index2); // -1
includes()
方法返回一個布林值,表示某個陣列是否包含給定的值,與字串的includes方法類似。
let arr = [1, 2, 3, 4, 5, 6];
console.log(arr.includes(3)); // true
console.log(arr.includes(100)); // false
迭代方法
every()
對陣列中的每一項執行給定函式,如果該函式對每一項都返回true,則返回true。
let arr = [1, 2, 3, 4, 5, 6];
// 是否所有的值都大於3
let isTrue = arr.every(value => value > 3);
console.log(isTrue); // false;
filter()
對陣列中的每一項執行給定函式,返回該函式會返回true的項組成的陣列。
let arr = [1, 2, 3, 4, 5, 6];
// 取陣列中大於3的值重新組成新陣列
let newArr = arr.filter(value => value > 3);
console.log(newArr); // [ 4, 5, 6 ]
forEach()
對陣列中的每一項執行給定函式。這個方法沒有返回值。
let arr = [1, 2, 3, 4, 5, 6];
// 迭代陣列的每一項
arr.forEach((item, index) => {
console.log(item); // 1, 2, 3, 4, 5, 6
})
map()
對陣列中的每一項執行給定函式,返回每次函式呼叫的結果組成的陣列。
let arr = [1, 2, 3, 4, 5, 6];
// 迭代陣列每個值加上100返回新陣列
let newArr = arr.map(val => val + 100);
console.log(newArr); // [ 101, 102, 103, 104, 105, 106 ]
some()
對陣列中的每一項執行給定函式,如果該函式對任一項返回true,則返回true。
let arr = [1, 2, 3, 4, 5, 6];
// 迭代陣列的每一項,只要有一項符合條件就返回true
let isTrue = arr.some(val => val >= 5);
let isTrue2 = arr.some(val => val > 6);
console.log(isTrue); // true
console.log(isTrue2); // false
reduce()和reduceRight()
這兩個方法都會迭代陣列的所有項,然後構建一個最終返回的值。其中,reduce()方法從陣列的第一項開始,逐個遍歷到最後。而reduceRight()則從陣列的最後一項開始,向前遍歷到第一項。
let arr = [1, 2, 3, 4];
// 從左到右累加結果
let result = arr.reduce((val1, val2) => {
return val1 + val2;
});
console.log(result); // 10
entries(),keys() 和 values()
ES6 提供三個新的方法——entries(),keys()和values()——用於遍歷陣列。它們都返回一個遍歷器物件,可以用for…of迴圈進行遍歷,唯一的區別是keys()是對鍵名的遍歷、values()是對鍵值的遍歷,entries()是對鍵值對的遍歷。
let arr = [1, 2, 3];
// entries()是對鍵值對的遍歷
for (let val of arr.entries()) {
console.log(val);
/**
[ 0, 1 ]
[ 1, 2 ]
[ 2, 3 ]
*/
}
// keys()是對鍵名的遍歷
for (let val of arr.keys()) {
console.log(val); // 0 1 2
}
// values()是對鍵值的遍歷
for (let val of arr.values()) {
console.log(val); // 1 2 3
}
參考資料
- , by Nicholas C.Zakas (作者) 李松峰 , 曹力 (譯者)
- , by 阮一峰
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2331/viewspace-2822976/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript陣列方法大全(推薦)JavaScript陣列
- JavaScript陣列方法JavaScript陣列
- Javascript - 陣列和陣列的方法JavaScript陣列
- JavaScript陣列小方法JavaScript陣列
- JavaScript陣列方法(splice)JavaScript陣列
- javascript陣列常用方法JavaScript陣列
- javascript陣列方法總結JavaScript陣列
- JavaScript 陣列 常用方法(二)JavaScript陣列
- JavaScript陣列去重方法JavaScript陣列
- JavaScript 陣列方法集合及示例!JavaScript陣列
- 全面介紹JavaScript陣列方法JavaScript陣列
- JavaScript 陣列方法:綜合指南JavaScript陣列
- JavaScript陣列方法總結(中)JavaScript陣列
- JavaScript陣列 幾個常用方法JavaScript陣列
- JavaScript陣列去重方法總結JavaScript陣列
- JavaScript 的新陣列分組方法JavaScript陣列
- JavaScript 陣列JavaScript陣列
- javascript--陣列的方法(新手指導)JavaScript陣列
- JavaScript 中陣列 sort() 方法的基本使用JavaScript陣列
- Javascript陣列排序sort方法和自定義排序方法JavaScript陣列排序
- 再學JavaScript ES(6-10)全版本語法大全(4)- 偽陣列轉換為陣列JavaScript陣列
- JavaScript陣列常用方法解析和深層次js陣列扁平化JavaScript陣列JS
- Javascript驗證方法大全JavaScript
- JavaScript—陣列(17)JavaScript陣列
- JavaScript 陣列 slice()JavaScript陣列
- JavaScript 陣列 fill()JavaScript陣列
- JavaScript 陣列 lastIndexOf()JavaScript陣列ASTIndex
- JavaScript 陣列 indexOf()JavaScript陣列Index
- JavaScript 陣列 concat()JavaScript陣列
- JavaScript 陣列concat()JavaScript陣列
- JavaScript 陣列slice()JavaScript陣列
- JavaScript 陣列indexOf()JavaScript陣列Index
- JavaScript 陣列values()JavaScript陣列
- JavaScript 陣列fill()JavaScript陣列
- javascript陣列操作JavaScript陣列
- JavaScript陣列(一)JavaScript陣列
- JavaScript 陣列 keys()JavaScript陣列
- JavaScript陣列(二)JavaScript陣列