JavaScript オブジェクトをループするにはどうすればよいですか?次の記事では、5 つの JS オブジェクト走査方法を詳しく紹介し、これら 5 つの方法を簡単に比較します。
for ... in
#Object.keys()、Object.values()、Object.entries()
2. オブジェクト属性の走査順序ルール
#属性名はvalueで、
value属性名はで昇順に並べられています。 String、
世代時間で昇順に並べ替えられます属性名はSymbol、
で昇順に並べ替えられます生成時間#3. トラバーサル方法の詳細説明
主にオブジェクトのプロパティをループするために使用されます。ループ内のコードが実行されるたびに、オブジェクトのプロパティが操作されます。構文は次のとおりです。
for (var in object) { 执行的代码块 }
var: 必須。指定する変数は、配列要素またはオブジェクトのプロパティです。 ############必要なオブジェクト。反復処理するオブジェクトを指定します。
var obj = {a: 1, b: 2, c: 3}; for (var i in obj) { console.log('键名:', i); console.log('键值:', obj[i]); }
出力結果:
键名:a 键值:1 键名:b 键值:2 键名:c 键值:3
2. Object.keys()、Object.values()、Object.entries()
# #Object.values(): オブジェクト キー値を含む配列を返します;Object.entries(): オブジェクト キー名とキー値を含む配列を返します。
let obj = { id: 1, name: 'hello', age: 18 }; console.log(Object.keys(obj)); // 输出结果: ['id', 'name', 'age'] console.log(Object.values(obj)); // 输出结果: [1, 'hello', 18] console.log(Object.entries(obj)); // 输出结果: [['id', 1], ['name', 'hello'], ['age', 18]
です。
3. Object.getOwnPropertyNames()
メソッドは
Object.keys()# に似ています## は、オブジェクトをパラメータとして受け取り、オブジェクト自体のすべてのプロパティ名を含む配列を返します。ただし、列挙不可能なlet a = ['Hello', 'World']; Object.keys(a) // ["0", "1"] Object.getOwnPropertyNames(a) // ["0", "1", "length"]
var obj = { 0: "a", 1: "b", 2: "c"}; Object.getOwnPropertyNames(obj) // ["0", "1", "2"] Object.keys(obj).length // 3 Object.getOwnPropertyNames(obj).length // 3
Object.getOwnPropertySymbols()
このメソッドは、文字列プロパティを除く、オブジェクト自体の Symbol プロパティの配列を返します:
let obj = {a: 1} // 给对象添加一个不可枚举的 Symbol 属性 Object.defineProperties(obj, { [Symbol('baz')]: { value: 'Symbol baz', enumerable: false } }) // 给对象添加一个可枚举的 Symbol 属性 obj[Symbol('foo')] = 'Symbol foo' Object.getOwnPropertySymbols(obj).forEach((key) => { console.log(obj[key]) }) // 输出结果:Symbol baz Symbol foo
Reflect.ownKeys() オブジェクト自体のすべてのプロパティを含む配列を返します。これは Object.keys() に似ています。Object.keys() はプロパティ キーを返しますが、列挙不可能なプロパティは含まれませんが、Reflect.ownKeys() はすべてのプロパティ キーを返します:
var obj = { a: 1, b: 2 } Object.defineProperty(obj, 'method', { value: function () { alert("Non enumerable property") }, enumerable: false }) console.log(Object.keys(obj)) // ["a", "b"] console.log(Reflect.ownKeys(obj)) // ["a", "b", "method"]
Object.keys(): オブジェクト プロパティの配列を返すことと同等;
Reflect.ownKeys():Object と同等。 getOwnPropertyNames( obj).concat(Object.getOwnPropertySymbols(obj).
4. トラバーサル メソッドの比較走査メソッド
継承プロパティ基本プロパティの走査
for ... in | self | inherit | is | Yes | No | |
---|---|---|---|---|---|---|
# は含まれません | ##Yes | No | No | Object.getOwnPropertyNames は含まれません() | Self | |
Yes | No | Yes | を含みません
#Object.getOwnPropertySymbols() | self | ||
No | Yes | すべてのシンボル プロパティ |
Reflect.ownKeys() | self | # は | |
Yes | Contains | [関連する推奨事項: | JavaScript 学習チュートリアル | ] |
以上がJavascriptオブジェクトの5つのループトラバースメソッドを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。