1. 程式人生 > >ES6中對數組的擴展

ES6中對數組的擴展

type true style 屬性 才會 指定 key bsp 擴展運算

  Array.from()方法用於將兩類對象轉為真正的數組:類似數組的對象和可遍歷對象。

  php有種返回json長成:let arr1={0:‘1‘,1:‘a‘,2:‘c‘};ES6可以直接寫成let arr2=Array.from(arr1);//[‘1‘,‘a‘,‘c‘]。ES5可以寫成 var arr3=[].slice.call(arr1);感謝ES6吧。

  只要是部署了Iterator接口的數據結構,Array.from都能將其轉為數組。Array.from(‘hello‘)//[h,e,l,l,o];如果參數是一個真正的數組,Array.from會返回一個一模一樣的新數組。

  Array.from方法還支持類似數組的對象。所謂類似數組的對象,本質特征只有一點,即必須有length屬性。因此,任何有length屬性的對象,都可以通過Array.from方法轉為數組,而這種情況擴展運算符無法轉換。

  Array.from還可以接受第二個參數,作用類似於數組的map方法,用來對每個元素進行處理,將處理後的值放入返回的數組。Array.from([1,2,3),(x)=>x*x)//[1,4,9]

  使用Array.from替換布爾值為false的成員。Array.from([1,,2,,3],(n)=>n||0)//[1,0,2,0,3]

  這可能就可以用來做filter。我說為什麽小程序,react沒有提供filter這種基礎的功能。

  Array.from()可以將各種值轉為真正的數組,並且提供map功能。只要有一個原始的數據結構,就可以先對它的值進行處理,然後轉成規範的數組結構,進而可以使用數量眾多的數組方法。

  Array.from()可以將字符串轉為數組,然後返回字符串的長度。因為它能正確處理Unicode字符,可以避免js將大於\uFFF的Unicode字符算作2個字符的bug。

function countSymbols(string){
  return Array.from(string).length ; 
}

  Array.of()方法用於將一組值轉換為數組。這個方法的主要目的,是彌補數組構造函數Array()的不足。因為參數個數的不同會導致Array的行為有差異。只有當參數個數不少於2個時,Array()才會返回由參數組成的新數組。參數個數只有1個時,實際上是指定數組的長度。

  Array.of基本上可以用來替換Array()或new Array(),並且不存在由於參數不同而導致的重載。它的行為非常統一。

  Array.of總是返回參數值組成的數組。如果沒有參數,就返回一個空數組。

  

  數組實例的find方法,用於找出第一個符合條件的數組成員。它的參數是一個回調函數,所有數組成員依次執行該回調函數,直到找出第一個返回值為true的成員,然後返回該成員。如果沒有符合條件的成員,則返回undefined;

  find方法的回調函數可以接受3個參數,依次為當前的值、當前的位置和原數組。

  數組實例的findIndex方法的用法與find方法非常類似,返回第一個符合條件的數組成員的位置,如果所有都不符合條件,則返回-1。

  數組實例的fill方法使用給定值填充數組。

  ES6提供了3個新方法-entries()、keys()和values()用來遍歷數組。它們都返回一個遍歷器對象。可以用for..of循環遍歷,keys()是對鍵名的遍歷,values()是對鍵值的遍歷,enteries()是對鍵值對的遍歷。

  Array.proptotype.includes方法返回一個布爾值,表示某個數組是否包含給定的值,與字符串的includes方法類似。

  數組的空位指數組的某一個位置沒有任何值。

  不全。

ES6中對數組的擴展