Array expansion
Array.from()
Convert array-like objects and iterables to real arrays
ES5
var arr1 = [].slice.call(arraylike)ES6
let arr2 = Array.from(arraylike)Note that this is a shallow copy (if the element is an object reference, the object reference is copied to the new array).
Array.from() accepts a second argument, similar to the array’s map method.
let names1 = Array.prototype.map.call(spans, s => s.textContent);
let names2 = Array.from(spans, s => s.textContent, this);The spread operator (…) can also convert certain data structures into arrays.
function foo() {
var args = [...arguments]
}Array.of()
Used to convert a set of values into an array, it can replace Array() or new Array()
ES5
function ArrayOf() {
return [].slice.call(arguments)
}
ArrayOf(3,11,8) //[3,11,8]
ES6
Array.of(3,11,8) // [3,11,8]
copyWithin()
Copies the member at a specified position within the current array to another position (overwriting the existing member), then returns the current array.
ES5
var i32a = new Int32Array([1, 2, 3, 4, 5]);
i32a.copyWithin(0, 2);
// Int32Array [3, 4, 5, 4, 5]
ES6
let a = [1,2,3,4,5];
a.copyWithin(0,2);
// [3, 4, 5, 4, 5]
[].copyWithin.call({length: 5, 3: 1}, 0, 3); // Array-like object
// {0: 1, 3: 1, length: 5}
find() and findIndex()
Used to find the first matching array member, addressing the limitation of IndexOf that cannot detect NaN.
ES5
[1,2,NAN].indexOf(NaN)
//-1
ES6
[1,2,NAN].find(Y=>Object.is(NaN,y))
//2
fill()
Fills an array with the given value, erasing existing elements. If a second and third parameter are provided, they specify the starting and ending positions of the fill.
['a','b','c'].fill(7,1,2)
//[a,7,c]
entries() keys() values()
Used for traversing an array, both return an iterator object.
for (let index of ["a","b"].keys()) {
cobsole.log(index)
} //0 1
for (let [index,ele] of ["a","b"].entries()) {
console.log(index,ele)
} //0 "a" 1 "b"