Javascriptオブジェクトの5つのループトラバースメソッドを詳しく解説
JavaScript オブジェクトをループするにはどうすればよいですか?次の記事では、5 つの JS オブジェクト走査方法を詳しく紹介し、これら 5 つの方法を簡単に比較します。
1. オブジェクト トラバーサル メソッド
for ... in
#Object.keys()、Object.values()、Object.entries()
- Object.getOwnPropertyNames()
-
##Reflect.ownKeys() 2. オブジェクト属性の走査順序ルール
上記 5 つのメソッドはすべて、オブジェクトのプロパティを走査するときに同じ属性走査順序ルールに従います
#属性名は value で、
value-
属性名は で昇順に並べられています。 String、
世代時間で昇順に並べ替えられます -
属性名は Symbol、
で昇順に並べ替えられます生成時間 #3. トラバーサル方法の詳細説明
##1. for in
for…in
主にオブジェクトのプロパティをループするために使用されます。ループ内のコードが実行されるたびに、オブジェクトのプロパティが操作されます。構文は次のとおりです。 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
- 注意:
- for in メソッドは、列挙可能なすべてのオブジェクトを走査するだけではありません。現在のオブジェクト プロパティがリフトされると、そのプロトタイプ チェーン上のプロパティもトラバースされます。
2. Object.keys()、Object.values()、Object.entries()
- これ3 つのメソッドはすべて、オブジェクトを走査するために使用されます。このメソッドは、指定されたオブジェクト独自の列挙可能なプロパティ (継承プロパティと Symbol プロパティを除く) で構成される配列を返します。配列要素の順序は、通常のループがオブジェクトを走査するときに返される順序と同じです。同じ順序で、これら 3 つの要素によって返される値は次のとおりです:
- Object.keys(): オブジェクト キー名を含む配列を返します。
# #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]
- Note
- Object.keys() メソッドによって返される配列内の値はすべて文字列です。つまり、文字列ではありません キー値は文字列に変換されます。
- 結果配列内の属性値は、継承された属性を除くすべてのオブジェクト自体の
- 列挙可能な属性
です。
3. Object.getOwnPropertyNames()
- 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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

MySQL クエリ結果の配列をオブジェクトに変換する方法は次のとおりです。 空のオブジェクト配列を作成します。結果の配列をループし、行ごとに新しいオブジェクトを作成します。 foreach ループを使用して、各行のキーと値のペアを新しいオブジェクトの対応するプロパティに割り当てます。新しいオブジェクトをオブジェクト配列に追加します。データベース接続を閉じます。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

PHP では、配列は順序付けられたシーケンスであり、要素はインデックスによってアクセスされます。オブジェクトは、new キーワードによって作成されたプロパティとメソッドを持つエンティティです。配列へのアクセスはインデックス経由で、オブジェクトへのアクセスはプロパティ/メソッド経由で行われます。配列値が渡され、オブジェクト参照が渡されます。

PHP の Request オブジェクトは、クライアントからサーバーに送信される HTTP リクエストを処理するために使用されるオブジェクトです。 Request オブジェクトを通じて、リクエストを処理して応答するために、リクエスト メソッド、リクエスト ヘッダー情報、リクエスト パラメータなどのクライアントのリクエスト情報を取得できます。 PHP では、$_REQUEST、$_GET、$_POST などのグローバル変数を使用して、要求された情報を取得できますが、これらの変数はオブジェクトではなく配列です。リクエスト情報をより柔軟かつ便利に処理するために、次のことができます。

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

C++ では、関数がオブジェクトを返すときに注意する点が 3 つあります。 オブジェクトのライフサイクルは、メモリ リークを防ぐために呼び出し元によって管理されます。ぶら下がりポインタを回避し、動的にメモリを割り当てるかオブジェクト自体を返すことにより、関数が戻った後もオブジェクトが有効なままであることを確認します。コンパイラーは、パフォーマンスを向上させるために、返されたオブジェクトのコピー生成を最適化する場合がありますが、オブジェクトが値セマンティクスによって渡される場合、コピー生成は必要ありません。
