1. 程式人生 > 其它 >ES6 幾個新增且常用的陣列方法

ES6 幾個新增且常用的陣列方法

forEach
var arr = [1, 2, 3, 4, 5];
// forEach
arr.forEach(function (item, i, array) {
console.log(item, i, array);
})

結果:
1 0 [1, 2, 3, 4, 5]
2 1 [1, 2, 3, 4, 5]
3 2 [1, 2, 3, 4, 5]
4 3 [1, 2, 3, 4, 5]
5 4 [1, 2, 3, 4, 5]

map:其最主要的作用就是將原陣列按照一定的規則對映成一個新的陣列。再將其返回,注意是返回一個新的陣列,而不是將原陣列直接改變使用方式和forEach類似,也是接受一個回撥函式,一個改變內部this指向的物件。
var arr = [1, 2, 3, 4, 5];
var newArr = arr.map(function (e, i, array) {
return 'hello ' + e;
})
結果:
["hello 1", "hello 2", "hello 3", "hello 4", "hello 5"] // newArr
[1, 2, 3, 4, 5] // arr

filter 返回一個新的陣列;
var arr = [1, 2, 3, 4, 5];
var newArr2 = arr.filter(function (e, i, array) {
if (e >= 2) return true;
})

some vs every some與接下里的every正好相對,some是隻要陣列中的某個值,符合你給定的判斷條件就返回true,而every則是陣列中的所有值都符合你給定的判斷條件的時候才會返回true,否則就返回false,也就是說兩個方法最後得到的都是true or false

var arr = [0, 1, 2, 3, 4, 5];
var result = arr.some(function (e, i, array) {
if (e === 3) {return true};
});

結果 :true
var arr = [0, 1, 2, 3, 4, 5];
var result2 = arr.every(function (e, i, array) {
if (e > 3) {return true};
});
結果:false


indexOf
var arr = [0, 1, 2, 3, 4, 5];
arr.indexOf(1) // 1

lastIndexOf
var arr = [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0];
arr.lastIndexOf(1) // 9

reduce:如果沒有傳入initialValue,則預設是陣列的第一項。第二個及其後面的引數分別是當前值,索引,陣列本身
var arr = [0, 1, 2, 3, 4, 5],
sum = arr.reduce(function (init, cur, i, array) {
return init + cur;
});

//output
sum // 15
reduceRight 類似reduce

set 陣列去重

let test = [0, 1, 2, 3, 4, 5, 4, 3, 2, 1, 0];
[...new Set(test)];

結果:[0,1,2,3,4,5]

from()

let myArray = {'0':'a','1':'b','2':'c'};
let arr = Array.from(myArray);
console.log(arr); //[]由於沒有length屬性列印結果為一個空陣列

let myArray = {'0':'a','1':'b','2':'c',length:3};
let arr = Array.from(myArray);
console.log(arr); //["a", "b", "c"]

如果引數是一個真正的陣列,Array.from()會返回一個一模一樣的新陣列
var arr = [1,2,3];
var myArr = Array.from(arr);
console.log(myArr); //[1, 2, 3]
myArr[0] = 4;
console.log(myArr); //[4, 2, 3]