jsオブジェクトトラバース法(5種)及び反復(6種類)要約(再生)

トラバースオブジェクトメソッド

1.for ...で
トラバーサルは最初のプロトタイプチェーントラバーサルの最終出力命令の特性は、それ自体で、オブジェクト自体と(シンボルプロパティを除く)プロトタイプチェーン列挙特性の特性に出力されます。プロトタイプチェーン通過した後、属性を列挙することができます

例えば:

VAR OBJ = { 'name'の"yayaya"、 '年齢':'12は、 'セックス': 'FEMALE' }; 
Object.prototype.pro1 = 関数(){}; //は、プロトタイプチェーンのプロパティを追加する 
オブジェクト.defineProperty(OBJ、 '国' 、{ 
  可算:trueに // 列挙
}); 
Object.defineProperty(OBJ、 '国家' 、{ 
  可算:falseに // ない列挙
})
obj.contry = '中国VARの指標OBJ){ 
  にconsole.log( 'キー='、インデックス、 '値=' 、OBJ [インデックス]) 
}

出力:

名前=値= yayayaキー
key = valueの年齢= 12である
キー値=セックス= FEMALE
キー=値= Contry中国
キー= Pro1の値=関数(){}

2.Object.keys()
オブジェクトをトラバース含むオブジェクト自体を返します(シンボル属性を除く)属性配列を挙げることができる。

EG:

VAR OBJ = { '名前': "yayaya"、 '年齢': '12'、 'セックス': '女' }; 
Object.prototype.pro1 = 関数(){} 
Object.defineProperty(OBJ、 '国' 、{ 
    列挙:
    値: 'CCC' 
})。
Object.defineProperty(OBJ、 '国' 、{ 
    列挙: // 不可枚举
})
obj.contry = '中国
Object.keys(OBJ).forEach(関数(指数){ 
    にconsole.log(インデックス、OBJ [インデックス])
})。

出力:

yayaya名
年齢12で
セックスFEMALE
Contry中国

3.Objcet.getOwnPropertyNames()
出力列挙とオブジェクト自体は、属性の配列を列挙することができない、出力属性は、チェーンのプロトタイプされていない

例えば:

VAR OBJ = { '名前': "yayaya"、 '年齢': '12'、 'セックス': '女' }; 
Object.prototype.pro1 = 関数(){} 
    Object.defineProperty(OBJ、 '国' 、{ 
    列挙:
    値: 'CCC' 
})。
Object.defineProperty(OBJ、 '国' 、{ 
    列挙: // 不可枚举
})
obj.contry = '中国
Object.getOwnPropertyNames(OBJ).forEach(関数(指数){ 
    にconsole.log(インデックス、OBJ [インデックス])
})。

出力:
名前はyayaya
年齢12
性別女性
カントリーCCC
国は未定義
Contry中国

)(4.Reflect.ownKeysを
列挙するか否か、プロパティ名は、記号や文字列であるかどうか、すべてのプロパティのオブジェクトを返します。

EG:

VAR OBJ = { '名前': "yayaya"、 '年齢': '12'、 'セックス': '女' }; 
Object.prototype.pro1 = 関数(){} 
Object.defineProperty(OBJ、 '国' 、{ 
    列挙:
    値: 'CCC' 
})。
Object.defineProperty(OBJ、 '国' 、{ 
    列挙: // 不可枚举
})
obj.contry = '中国
Reflect.ownKeys(OBJ).forEach(関数(指数){ 
    にconsole.log(インデックス、OBJ [インデックス])
})。

結果を返します。
名前yayayaの
年齢12れ
セックスFEMALE
国CCC
国は未定義
Contry中国を

5 _.keys
アンダースコアウィジェットトラバーサル方法によってのみオブジェクト自体を通過することができ、属性を列挙することができる

例:

VAR OBJ = { '名前': "yayaya"、 '年齢': '12'、 'セックス': '女' }; 
Object.prototype.pro1 = 関数(){} 
Object.defineProperty(OBJ、 '国' 、{ 
    列挙:
    値: 'CCC' 
})。
Object.defineProperty(OBJ、 '国' 、{ 
    列挙: // 不可枚举
})
obj.contry = '中国
console.log(_キー(OBJ));

出力:

セックス年齢国名

の二つの方法繰り返す。
1.forEach

EGを:

VaRの ARR = [ 'A'、 'B'、 'C'、 'D' ]。
arr.forEach(関数(値、指数){ 
    にconsole.log( '値='、値、 'インデックス=' 指数); 
})

出力:

= 0 A =値インデックス
値= B. 1 =インデックス
値= 2 = Cインデックス
値インデックス= D = 3

2.mapは、
各処理トラバーサル対応することができ、各関数呼び出しの結果は、配列返し

例えば:

VaRの ARR = [ 'A'、 'B'、 'C'、 'D' ]。
arr.map(関数(項目、インデックス、アレイ){ 
    にconsole.log(項目、インデックス); 
})

出力:

0 A
、B 1
、C 2
Dを3

を介して3.forループ

例:

VaRの ARR = [ 'A'、 'B'、 'C'、 'D' ]。
VAR ; I <arr.length I ++は、I = 0 ){ 
    にconsole.log(I、ARR [I])
}

出力:

0
1 B
2 C
3 D

で4.For ...

例えば:

VaRの ARR = [ 'A'、 'B'、 'C'、 'D' ]。
VAR I ARR){ 
    にconsole.log(:、I、 '値:' 'インデックス' 、ARR [I])
}

出力:

インデックス:0値:
インデックス:値1:Bの
指標:2値:Cの
指数:値3:D

(ES6)の... 5.for
インデックスをトラバースすることができない、唯一の値を横切る、データシンボルを横断することができますtype属性、データ構造を横断するための方法として、この方法では、すべての統一

などを:

VaRの ARR = [ 'A'、 'B'、 'C'、 'D' ]。
VaRのARRの値){ 
    にconsole.log( '値' 、値)
}

出力:


値のb
値Cの
値d

6.利用は插件アンダー

例えば:

VaRの ARR = [ 'A'、 'B'、 'C'、 'D' ]。
VAR _ =( 'アンダースコア'が必要です)。
_.each(ARR、関数(値、インデックス、ARR){ 
    にconsole.log(値、インデックス、ARR)
})

出力:

0 '、 'B'、 'C'、' D]
B 1 [ '、 'B'、 'C'、 'D']
C 2 ['、 'B'、」 C」、 'D]
D 3 [ ''、 'B'、 'C'、' D]

おすすめ

転載: www.cnblogs.com/joe235/p/11585858.html