目次
はオブジェクト自体と列挙可能なプロパティにのみアクセスします。ほとんどの場合、これらのプロパティのみを評価する必要があるため、これは合理的です。
の利点を区別するために、最初にプロパティ値を取得する方法を見てみましょう。 2017 年以前の目標はどのように達成されるのでしょうか?
Object.entries()返回属性值和键
关于顺序上的笔记
总结
ホームページ ウェブフロントエンド jsチュートリアル JS でオブジェクトのプロパティをトラバースするメソッドの紹介

JS でオブジェクトのプロパティをトラバースするメソッドの紹介

Nov 26, 2020 pm 05:44 PM
javascript オブジェクトのプロパティ トラバース

JS でオブジェクトのプロパティをトラバースするメソッドの紹介

ECMAScript 2016 が 2016 年 6 月にリリースされたのと同じ時期に、JavaScript 開発者は、別の素晴らしい提案がまとまったことを知ってうれしいでしょうフェーズ 4 (完了)。

翻訳者注: この記事の翻訳時には、これらの機能がサポートされています。

これらの関数をリストしてみましょう:

もちろん、ES2017 がリリースされるまで、またはベンダー (ブラウザー) が新機能を実装するまで待つ必要はありません。

Babel

には、これらの完成した提案のほとんどの機能がすでに含まれています。 この記事では、主にオブジェクト プロパティの反復を改善する方法について説明します。

    使用
  • Object.values()

    オブジェクト プロパティの取得

  • Use
  • Object.entries()

    Get Attributeskey/value

  • 一見すると、これらの静的関数は重要な価値をもたらすとは思えません。ただし、これらを
for...of

ループと組み合わせて使用​​すると、オブジェクトのプロパティを走査するシンプルで美しい方法が得られます。 ######確認してみましょう。 独自のプロパティと列挙可能なプロパティ

すでにご存知かもしれませんが、

Object.keys()

はオブジェクト自体と列挙可能なプロパティにのみアクセスします。ほとんどの場合、これらのプロパティのみを評価する必要があるため、これは合理的です。

プロパティを所有および継承するオブジェクトの例を見てみましょう。 Object.keys()独自のプロパティ キー (

key

) のみを返します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>let simpleColors = { colorA: &amp;#39;white&amp;#39;, colorB: &amp;#39;black&amp;#39; }; let natureColors = { colorC: &amp;#39;green&amp;#39;, colorD: &amp;#39;yellow&amp;#39; }; Object.setPrototypeOf(natureColors, simpleColors); Object.keys(natureColors); // =&gt; [&amp;#39;colorC&amp;#39;, &amp;#39;colorD&amp;#39;] natureColors[&amp;#39;colorA&amp;#39;]; // =&gt; &amp;#39;white&amp;#39; natureColors[&amp;#39;colorB&amp;#39;]; // =&gt; &amp;#39;black&amp;#39;</pre><div class="contentsignin">ログイン後にコピー</div></div>

Object.keys( NatureColors)JS でオブジェクトのプロパティをトラバースするメソッドの紹介

natureColors

オブジェクト自体と列挙可能なプロパティ キー ['colorC', 'colorD'] を返します。 natureColors simpleColors プロトタイプ オブジェクトから継承されたプロパティが含まれます。ただし、Object.keys() 関数はそれらをスキップします。 Object.values() および

Object.entries()

同じ条件 (所有プロパティと列挙可能なプロパティ) を使用してオブジェクトのプロパティにアクセスします。見てみましょう: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>let simpleColors = { colorA: &amp;#39;white&amp;#39;, colorB: &amp;#39;black&amp;#39; }; let natureColors = { colorC: &amp;#39;green&amp;#39;, colorD: &amp;#39;yellow&amp;#39; }; Object.values(natureColors); // =&gt; [&amp;#39;green&amp;#39;, &amp;#39;yellow&amp;#39;] Object.entries(natureColors); // =&gt; [ [&amp;#39;colorC&amp;#39;, &amp;#39;green&amp;#39;], [&amp;#39;colorD&amp;#39;, &amp;#39;yellow&amp;#39;] ]</pre><div class="contentsignin">ログイン後にコピー</div></div>

for...in との違いに注目してください。列挙型自身のプロパティと継承されたプロパティをループします。次の例はこれを示しています:

let simpleColors = {  
    colorA: &#39;white&#39;,
    colorB: &#39;black&#39;
};
let natureColors = {  
    colorC: &#39;green&#39;,
    colorD: &#39;yellow&#39;
};

let enumerableKeys = [];  
for (let key in natureColors) {  
    enumerableKeys.push(key);
}
enumerableKeys; // => ["colorC", "colorD", "colorA", "colorB"]
ログイン後にコピー
JS でオブジェクトのプロパティをトラバースするメソッドの紹介

enumerableKeysJS でオブジェクトのプロパティをトラバースするメソッドの紹介 配列には、natureColors オブジェクト自身のプロパティのキーが含まれています:

'colorC'

および 'colorD' さらに、for...in は、

simpleColors

プロトタイプから継承されたプロパティ キー ('colorA' および ' colorB) を走査します。 「Object.values() はプロパティ値を返します

Object.values()

の利点を区別するために、最初にプロパティ値を取得する方法を見てみましょう。 2017 年以前の目標はどのように達成されるのでしょうか?

最初に Object.keys() を使用してプロパティ キーを収集し、次にプロパティ アクセサーを使用して値を追加の変数に保存します。例を見てみましょう:

let meals = {  
    mealA: &#39;Breakfast&#39;,
    mealB: &#39;Lunch&#39;,
    mealC: &#39;Dinner&#39;
};
for (let key of Object.keys(meals)) {  
    let mealName = meals[key];
    // ... do something with mealName
    console.log(mealName); // => &#39;Breakfast&#39; &#39;Lunch&#39; &#39;Dinner&#39;
}
ログイン後にコピー

meals是一个普通的JavaScript对象。使用Object.keys(meals)for...of的循环枚举出对象键值。代码看起来很简单,但是可以通过去掉let mealName = meals[key]来优化它。

通过使用Object.values()可以直接访问对象属性值,可以实现优化。优化代码后如下:

let meals = {  
    mealA: &#39;Breakfast&#39;,
    mealB: &#39;Lunch&#39;,
    mealC: &#39;Dinner&#39;
};
for (let mealName of Object.values(meals)) {  
    console.log(mealName); // => &#39;Breakfast&#39; &#39;Lunch&#39; &#39;Dinner&#39;
}
ログイン後にコピー

由于Object.values(meals)返回数组中的对象属性值,因此通过for...of循环把对象的属性值直接分配给mealName,因此不需要添加额外的代码,就像前面的例子那样。

Object.values()只做一件事,但做得很好。这也是我们写代码的正确姿势。

Object.entries()返回属性值和键

Object.entries()很强大,它返回对象的键和属性值,而且它们是成对的,比如: [ [key1, value1], [key2, value2], ..., [keyN, valueN] ]

可能直接使用有些不爽。幸运的是,数组在for...of循环中传入let [x, y] = array,很容易得到对应的访问键和值。

下面是Object.entries()的示例:

let meals = {  
    mealA: &#39;Breakfast&#39;,
    mealB: &#39;Lunch&#39;,
    mealC: &#39;Dinner&#39;
};
for (let [key, value] of Object.entries(meals)) {  
    console.log(key + &#39;:&#39; + value); // => &#39;mealA:Breakfast&#39; &#39;mealB:Lunch&#39; &#39;mealC:Dinner&#39;
}
ログイン後にコピー

Object.entries(meals)返回meal对象的属性键和值到一个数组中。然后通过for...of循环解构性参数let [key, value]把数组中的值分配给keyvalue变量。

正如所见,访问的键和值现在已经是一种舒适而且易于理解的形式。由于Object.entries()返回一个与数组解构性赋值相兼容的集合,因此没有必要添加额外的赋值或声明行。

Object.entries()将普通对象导入到Map时是有用的。由于Object.entries()返回Map构造函数所接受的格式:keyvalue成对。因此问题变得无关紧要。

让我们创建一个JavaScript对象并将其导出到Map中:

let greetings = {  
    morning: &#39;Good morning&#39;,
    midday: &#39;Good day&#39;,
    evening: &#39;Good evening&#39;
};
let greetingsMap = new Map(Object.entries(greetings));  
greetingsMap.get(&#39;morning&#39;); // => &#39;Good morning&#39;  
greetingsMap.get(&#39;midday&#39;);  // => &#39;Good day&#39;  
greetingsMap.get(&#39;evening&#39;); // => &#39;Good evening&#39;
ログイン後にコピー

JS でオブジェクトのプロパティをトラバースするメソッドの紹介

new Map(Object.entries(greetings))构造函数使用一个参数来调用,这个参数是greeting对象中导出的数组的一个键值对。

如预期的那样,map实例greetingsMap包含greetings对象导入的属性。可以使用.get(key)方法访问这些数据。

有趣的是,Map提供了与Object.values()Object.entries()方法相同的方法(只有它们返回迭代器),以便提取Map实例的属性值或键值对:

Map提供了普通对象的改良版。你可以获得Map的大小(对于一个简单的对象,你必须手动操作),并使它作为键或对象类型(简单对象把键当作一个字符串原始类型)。

我们来看看map.values().entries()方法返回什么:

let greetings = {  
    morning: &#39;Good morning&#39;,
    midday: &#39;Good day&#39;,
    evening: &#39;Good evening&#39;
};
let greetingsMap = new Map(Object.entries(greetings));  
[...greetingsMap.values()]; // =>[&#39;Good morning&#39;, &#39;Good day&#39;, &#39;Good evening&#39;]
[...greetingsMap.entries()]; // =>[[&#39;morning&#39;,&#39;Good morning&#39;],
                       [&#39;midday&#39;,&#39;Good day&#39;],[&#39;evening&#39;,&#39;Good evening&#39;]]
ログイン後にコピー

JS でオブジェクトのプロパティをトラバースするメソッドの紹介

注意:greetingsMap.values()greetingsMap.entries()返回迭代器对象(Iterator Objects)。将结果放入一个数组,扩展运算符...是必要的。在for...of循环语句中可以直接使用迭代器。

关于顺序上的笔记

JavaScript对象是简单的键值映射。所以对象的属性的顺序是无关紧要的。在大多数情况下,你不应该依赖它。

然而,ES2015已经对迭代的方式提供了标准化的要求:首先是有序的数字字符,然后是插入顺序的字符串,然后是插入顺序的符号(symbols)。在ES5和较早的标准中,属性的顺序没有指定。

如果你需要一个有序的集合,推荐的方法是将数据存储到数组或集合中。

总结

Object.values()Object.entries()是为JavaScript开发人员提供函数的另一个改进步骤的新标准化 。

Object.entries() データ グループの構造化パラメータを使用して実行すると、キーと値をさまざまな変数に簡単に割り当てることができます。この関数を使用すると、通常の JavaScript オブジェクトのプロパティを Map オブジェクトに簡単にエクスポートすることもできます。 Map は、従来の map (または hash) の動作をより適切にサポートできます。

注: object.values() および object.entries()データが返される順序は未定です。したがって、順序に依存しないでください。

英語の元のアドレス: https://dmitripavlutin.com/how-to-iterate-easy-over-object-properties-in-javascript/

翻訳アドレス: https: //www.w3cplus.com/javascript/how-to-iterate-easy-over-object-properties-in-javascript.html

プログラミング関連の知識の詳細については、次を参照してください:プログラミング入門! !

以上がJS でオブジェクトのプロパティをトラバースするメソッドの紹介の詳細内容です。詳細については、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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の 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 02:54 PM

WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

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

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

JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 JavaScript と WebSocket を使用してリアルタイムのオンライン注文システムを実装する方法 Dec 17, 2023 pm 12:09 PM

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 WebSocketとJavaScriptを使ったオンライン予約システムの実装方法 Dec 17, 2023 am 09:39 AM

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

Java フォルダーをループしてすべてのファイル名を取得する方法 Java フォルダーをループしてすべてのファイル名を取得する方法 Mar 29, 2024 pm 01:24 PM

Java は、強力なファイル処理機能を備えた人気のあるプログラミング言語です。 Java では、フォルダーを走査してすべてのファイル名を取得するのが一般的な操作であり、これは特定のディレクトリー内のファイルを迅速に見つけて処理するのに役立ちます。この記事では、Java でフォルダーを走査してすべてのファイル名を取得するメソッドを実装する方法と、具体的なコード例を紹介します。 1. 再帰的メソッドを使用してフォルダーを走査する 再帰的メソッドを使用してフォルダーを走査することができます。再帰的メソッドはそれ自体を呼び出す方法であり、フォルダーを効果的に走査できます。

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の使用

JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 JavaScript と WebSocket: 効率的なリアルタイム画像処理システムの構築 Dec 17, 2023 am 08:41 AM

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。

See all articles