對陣列功能的增強
陣列的建立
- 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 複製程式碼
- Array.from()
將類陣列物件(具有數值型別的索引+length長度屬性,比如DOM的NodeList)轉換成陣列型別
傳統的比較快捷的方法是使用slice
ES6提供的解決方法Array.from(),支援將**類陣列物件、可迭代物件(包含Symbol.iterator屬性)**轉換成陣列型別Array.prototype.slice.call(arrayLike) 複製程式碼
Array.from(arrayLike) 複製程式碼
陣列例項的新方法
- 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 複製程式碼
- 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 複製程式碼
- copyWithin()允許在陣列內部複製自身的元素
型別化陣列
不是嚴格意義上的陣列,主要是為JS提供快速按位計算的能力,fill()\copyWithin()方法都是基於此建立的,平時使用的場景比較少,感興趣的可以繼續瞭解下