1,Array.from用於將對象轉爲數組(可遍歷和類數組對象部署Iterator 屬性的對象)
和擴展運算符的區別是任何具備Length屬性的均可以使用數組
var arr = [1,2,3,4]; var set = new Set(arr); var obj = { 0:23, 2:'name', length:3 } //ES5的方法是用原型 Array.prototype.slice.call(obj) //[23, empty × 1, "name"] Array.from(obj) //[23, undefined, "name"] //該方法還有一個參數相似ES5的新方法 Array.from(arr,num=>num*3) // [3, 6, 9, 12] //將字符串轉化爲數組,特別是大於\uFFFF的單個字符,避免分割成多個
Array.of用來彌補構造函數的歧義函數
var arr1 = new Array(); //[] var arr2 = new Array(3); //[ , , ]三個空值只有一個參數其實指定的是數組數量 var arr3 = new Array(3,4) //[3,4] //以上只有參數大於兩個的時候纔會生成正確的數組 Array.of(3) //[3] //參數直接是數組元素,不管多少
copyWithin和fill將數組內部元素複製到指定位置,會改變元素this
Array.prototype.copyWithin(target,start,end);//target複製的目標位置,start複製的開始,end結束 var arr = [1,2,3,'a','b','c']; arr.copyWithin(0,2,4) arr.fill(3) // [3, 3, 3, 3, 3, 3]抹去全部元素而且填充 arr.fill(ele,star,end) //還有其餘的參數指定起始位置 //這個兩個方法後面的參數是從start開始包含該位置,end結束,不包含該位置
ES6數組新的方法prototype
//find(fn,[this.obj]);和ES5遍歷的方法同樣的參數 var arr = [1,2,3,4]; arr.find(x=>x>2); //返回第一個爲true的元素,若是沒有的話就返回undefined; //識別是否有元素NaN var ar = [NaN,2,4]; ar.indexOf(NaN)// -1; ar.find(x=>(Object.is(NaN,x))) //NaN //includes(ele,start,end);判段是否包含某個元素後面的參數是開始結束的位置 ar.includes(2) //true; ar.includes(NaN) //true