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"