【深入淺出ES6】陣列

Eric_zhang發表於2019-03-04

【深入淺出ES6】陣列

對陣列功能的增強

陣列的建立

  1. Array.of() 陣列構造器new Array()建立陣列時,因為傳遞引數的個數與型別不同,會出現怪異的行為,因此引進了Array.of()方法建立陣列
    let items = new Array(2) //如果只有一個引數,並且是數值型,new Array()構造器就把引數理解成為陣列的長度,所以元素都為undefined
    console.log(items[0]) //undefined
    console.log(items[1]) //undefined
    
     items = new Array(2,1) //如果引數超過1個,則new Array()構造器就把引數理解成為陣列的元素
     console.log(items[0]) //2
    console.log(items[1])  //1
    
    //所以這裡作為對引數理解的統一,使用Array.of()都會把引數理解成為元素
    items = Array.of(2)
    console.log(items[0]) //2
    複製程式碼
  2. Array.from() 將類陣列物件(具有數值型別的索引+length長度屬性,比如DOM的NodeList)轉換成陣列型別 傳統的比較快捷的方法是使用slice
    Array.prototype.slice.call(arrayLike)
    複製程式碼
    ES6提供的解決方法Array.from(),支援將**類陣列物件、可迭代物件(包含Symbol.iterator屬性)**轉換成陣列型別
    Array.from(arrayLike)
    複製程式碼

陣列例項的新方法

  1. find()\findIndex() 根據過濾條件返回想要的第一個滿足條件的元素值
    let numbers = [12,20,33,45]
    let value = numbers.find(value => value>30)
    let index = numbers.findIndex(value => value>30)
    console.log(value) //33
    console.log(index) //2
    複製程式碼
  2. fill()陣列元素的賦值填充,第一個必填引數為想要賦新值的元素,支援指定第二、第三個參數列示賦值開始和結束的位置
    let arr = [1,2,3,4]
    arr.fill(1) //將元素全部重新賦值
    console.log(arr.toString()) //1,1,1,1
    arr.fill(0,1)
    console.log(arr.toString()) //1,0,0,0
    arr.fill(10,1,3)
    console.log(arr.toString()) //1,10,10,0
    複製程式碼
  3. copyWithin()允許在陣列內部複製自身的元素

型別化陣列

不是嚴格意義上的陣列,主要是為JS提供快速按位計算的能力,fill()\copyWithin()方法都是基於此建立的,平時使用的場景比較少,感興趣的可以繼續瞭解下

相關文章