配列へのES6の重量との約束の実行の順序

クラスのArray.from()メソッドは、配列が実際の配列にオブジェクトまたはオブジェクトを横切ることができる変換することです。オブジェクトのいわゆるクラス配列は、最も基本的な要件は、オブジェクトの長さ特性を有することです。

本当の配列への配列変換オブジェクトは、以下の条件を満たしている必要があります。

  図1は、属性の長さを有していなければならないオブジェクトのそのような配列は、配列の長さを指定します。いかなる長プロパティが存在しない場合、配列は空の配列に変換されます。

  2、クラスのプロパティ名は、オブジェクトの配列が数値または数字の文字列でなければなりません。

  PS:クラス属性の配列オブジェクトの名前を引用符で囲むことができ、引用されないことがあります。

Array.fromは、3つのタイプのパラメータを受け入れることができます。

1、Array.from(OBJ、mapFn)

配列オブジェクトobjを指す、オブジェクトまたはオブジェクトセットの同様のアレイは、マップは、処理要素のアレイ内の方法を指します。
// アレイメンバー偽0のブール値を意味 
Array.from([1 ,, 2,3,3]、X => X || 0)// [1,0,2,3,3]を
 
// 配列にアレイ状物体、及び2倍塩基を乗算は 
arrayLike = { '0'ましょう: '2'、 '1': '4'、 '2':5 ''、 長:. 3 } 
Array.from(arrayLike、X => X * 2)// [4,8,10] 
 
// セット配列にオブジェクトと乗算2倍基地 
Array.from(新しい新 SET([1,2,3,4])、X => X * 2)// [2,4,6,8]

2、Array.from({長さ:n}は、FN)

最初のパラメータは、2番目のパラメータは実行する回数を指定します。様々な値は、実際の配列に変換することができます。
Array.from({長さ:3}、()=> 'ジャック')// [ "ジャック"、 "ジャック"、 "ジャック"] 
 
Array.from({長さ: 3}、アイテム=>(項目= { '名前': '少'、 '年齢':18}))// [{ '名前': '少'、 '年齢':18}、{ '名前': '少'、 '年齢':18} 、{ '名前': '少'、 '年齢':18}] 
 
Array.from({長さ: 2}、(V、I)=>アイテム= {度:I})。// 生成一个インデックス从0到4的数组对象[{度:0}、{度:1}]

3、Array.from(文字列) 

文字列を受け入れ
Array.from( 'ABC')// [ 'A'、 'B'、 'C']

再配列への新しいセット()メソッド

ES6が追加  設定し  、このデータ配列に類似した構造、が、 ユニークなセットのメンバーを。この特性に基づいて、重いの配列を作るために使用されるのに非常に適しています。

機能異なる(B){
     戻り Array.from(新しいセット([...、... B]))
}

以下のための... + Object配列の重複排除の方法

まず、空のオブジェクトを作成し、ループの反復処理に使用する、使用してオブジェクトのプロパティは繰返さないこの機能を、反復される配列要素をチェック。

機能異なる(B){ 
    せARR = a.concat(b)の
    結果をさせ = [] 
    OBJせ = {} 

    のための(ARRのIを聞かせて){
         場合(!OBJ [I]){ 
            result.push(I)
            OBJ [I] = 1 
        } 
    } 

    戻り結果
}

実行約束の順序については、非同期と待ちます

非同期関数async1(){ 
  にconsole.log( 'async1開始' 
  待つasync2()
  はconsole.log( 'async1末端' 
} 
非同期関数async2(){ 
  にconsole.log( 'async2' 
} 
はconsole.log(「スクリプト開始」
のsetTimeout(関数(){ 
  にconsole.log( 'のsetTimeout' 
}、 0 
async1(); 
新しいプロミス(関数(解決){ 
  にconsole.log( 'promise1' 
  解決(); 
})。次に、(関数(){ 
  にconsole.log( 'promise2' 
})
はconsole.log( 'スクリプト'末端)

上記コードの印刷順序を次のように

スクリプトの開始は、
開始async1 
async2 
promise1の
スクリプトエンド
promise2 
エンドasync1 
のsetTimeoutを

それに注意してください。

  1. タイミング同期はすぐに0を行ったが、非同期で実行されていないのsetTimeout。
  2. 同期機能を約束します。
  3. 実行後()、その後の約束を、解決同期実行されますが、非同期にされていません。

おすすめ

転載: www.cnblogs.com/asituhaitang/p/11759930.html