参考:https://github.com/freeshineit/javascript-array
Array.prototype.flat()new
flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
语法:
var newArray = arr.flat([depth])
实例:
var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
//使用 Infinity,可展开任意深度的嵌套数组
var arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
//方法会移除数组中的空项:
var arr4 = [1, 2, , 4, 5];
arr4.flat();
// [1, 2, 4, 5]
代替方案:
var arr = [1, 2, [3, 4]];
// 展开一层数组
arr.flat();
// 等效于
arr.reduce((acc, val) => acc.concat(val), []);
// [1, 2, 3, 4]
// 使用扩展运算符 ...
const flattened = arr => [].concat(...arr);
Array.prototype.concat() [ES3]
(concat()方法合并两个或两个以上数组。此方法不更改现有数组,而是返回新数组)
语法:
var new_array = old_array.concat(value1[,value2[, …[,valueN]]])
实例:
var arr1=['a','b','c'];
var arr2=['d','e','f'];
var arr3=arr1.concat(arr2);
// arr3 is a new array [ "a", "b", "c", "d", "e", "f" ]
Array.prototype.copyWithin() [ES6]
(copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。target(必需):从该位置开始替换数据。start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。)
( copyWithin()方法是数组的浅拷贝部分, 而数组的大小没有改变。)
语法:
arr.copyWithin(target)
arr.copyWithin(target,start)
arr.copyWithin(target,start,end)
实例:
['alpha','bravo','charlie','delta'].copyWithin(2,0);
// results in ["alpha", "bravo", "alpha", "bravo"]
Array.prototype.entries() [ES6]
(entries()方法返回一个新数组的迭代器对象包含数组中的每个索引的键/值对。)
语法:
a.entries()
实例:
var a = ['a','b','c'];
var iterator = a.entries();
console.log(iterator.next().value); // [0, 'a']
console.log(iterator.next().value); // [1, 'b']
console.log(iterator.next().value); // [2, 'c']
var a = ['a','b','c'];
var iterator = a.entries();
for(lete of iterator){
console.log(e);
}// [0, 'a']// [1, 'b']// [2, 'c']
Array.prototype.every() [ES5]
(every方法是数组的逻辑判定:对数组元素应用指定对函数进行判定,返回true 或 false)
语法:
arr.every(callback[,thisArg])
实例:
functionisBigEnough(element,index,array){
return element >= 10;
}
[12,5,8,130,44].every(isBigEnough);// false
[12,54,18,130,44].every(isBigEnough);// true
[1,2,3,4,5,6,7,8].every(function(x){
x < 10; } ) //true 所有值<10
Array.prototype.fill() [ES6]
(fill()方法填充数组中的所有从一开始指数结束指标与静态值的元素)
语法:
arr.fill(value)
arr.fill(value,start = 0)
arr.fill(value,start = 0,end = this.length)
(value 值是必须的;start 开始位置 ,可选、默认值为;end结束位置,可选、默认值为数组的length)
实例:
varnumbers=[1,2,3]
numbers.fill(1);
[1,2,3].fill(4);// [4, 4, 4]
[1,2