目次
1. オブジェクト トラバーサル メソッド
列挙不可能なプロパティの走査
ホームページ ウェブフロントエンド jsチュートリアル Javascriptオブジェクトの5つのループトラバースメソッドを詳しく解説

Javascriptオブジェクトの5つのループトラバースメソッドを詳しく解説

Aug 04, 2022 pm 05:28 PM
javascript 物体 ループスルー

JavaScript オブジェクトをループするにはどうすればよいですか?次の記事では、5 つの JS オブジェクト走査方法を詳しく紹介し、これら 5 つの方法を簡単に比較します。

Javascriptオブジェクトの5つのループトラバースメソッドを詳しく解説

1. オブジェクト トラバーサル メソッド

  • for ... in

  • #Object.keys()、Object.values()、Object.entries()

  • Object.getOwnPropertyNames()

  • #Object.getOwnPropertySymbols()
  • ##Reflect.ownKeys()
  • 2. オブジェクト属性の走査順序ルール

  • 上記 5 つのメソッドはすべて、オブジェクトのプロパティを走査するときに同じ属性走査順序ルールに従います

#属性名は value で、

value
  • 属性名は で昇順に並べられています。 String

    世代時間で昇順に並べ替えられます
  • 属性名は Symbol

    で昇順に並べ替えられます生成時間
  • #3. トラバーサル方法の詳細説明

  • ##1. for in

for…in

主にオブジェクトのプロパティをループするために使用されます。ループ内のコードが実行されるたびに、オブジェクトのプロパティが操作されます。構文は次のとおりです。

for (var in object) {
 执行的代码块
}
ログイン後にコピー
2 つのパラメータ:

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
    ログイン後にコピー

4. Object.getOwnPropertySymbols()

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
ログイン後にコピー

5 。 Reflect.ownKeys()

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 ... inselfinheritisYesNoObject.keys()self##YesNoNoObject.getOwnPropertyNames は含まれません()Selfを含みません#NoReflect.ownKeys()self# はNoYesContains[関連する推奨事項:
# は含まれません
Yes No Yes
#Object.getOwnPropertySymbols() self
No Yes すべてのシンボル プロパティ

JavaScript 学習チュートリアル ]

以上がJavascriptオブジェクトの5つのループトラバースメソッドを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー WebSocket と JavaScript: リアルタイム監視システムを実装するための主要テクノロジー Dec 17, 2023 pm 05:30 PM

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

MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? MySQLクエリ結果の配列をオブジェクトに変換するにはどうすればよいですか? Apr 29, 2024 pm 01:09 PM

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

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 Dec 17, 2023 pm 05:13 PM

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

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

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

PHP における配列とオブジェクトの違いは何ですか? PHP における配列とオブジェクトの違いは何ですか? Apr 29, 2024 pm 02:39 PM

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

PHP の Request オブジェクトとは何ですか? PHP の Request オブジェクトとは何ですか? Feb 27, 2024 pm 09:06 PM

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

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

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

C++ 関数がオブジェクトを返すときは何に注意する必要がありますか? C++ 関数がオブジェクトを返すときは何に注意する必要がありますか? Apr 19, 2024 pm 12:15 PM

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

See all articles