JS でオブジェクトのプロパティをトラバースするメソッドの紹介
ECMAScript 2016 が 2016 年 6 月にリリースされたのと同じ時期に、JavaScript 開発者は、別の素晴らしい提案がまとまったことを知ってうれしいでしょうフェーズ 4 (完了)。
翻訳者注: この記事の翻訳時には、これらの機能がサポートされています。
これらの関数をリストしてみましょう:
- #関数パラメータ リストと呼び出しの末尾のカンマ 新しい提案は、 ESMAScript2017 標準は 2017 年 (おそらく 2017 年の夏) にリリースされる予定です。この機能リストは増え続ける可能性があることに注意してください。とても良い!
もちろん、ES2017 がリリースされるまで、またはベンダー (ブラウザー) が新機能を実装するまで待つ必要はありません。
Babelには、これらの完成した提案のほとんどの機能がすでに含まれています。 この記事では、主にオブジェクト プロパティの反復を改善する方法について説明します。
- 使用
- Object.values()
オブジェクト プロパティの取得
Use - Object.entries()
Get Attributes
key/value
一見すると、これらの静的関数は重要な価値をもたらすとは思えません。ただし、これらを
ループと組み合わせて使用すると、オブジェクトのプロパティを走査するシンプルで美しい方法が得られます。 ######確認してみましょう。 独自のプロパティと列挙可能なプロパティ
すでにご存知かもしれませんが、
Object.keys()はオブジェクト自体と列挙可能なプロパティにのみアクセスします。ほとんどの場合、これらのプロパティのみを評価する必要があるため、これは合理的です。
プロパティを所有および継承するオブジェクトの例を見てみましょう。 Object.keys()
独自のプロパティ キー (
) のみを返します: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>let simpleColors = {
colorA: &#39;white&#39;,
colorB: &#39;black&#39;
};
let natureColors = {
colorC: &#39;green&#39;,
colorD: &#39;yellow&#39;
};
Object.setPrototypeOf(natureColors, simpleColors);
Object.keys(natureColors); // => [&#39;colorC&#39;, &#39;colorD&#39;]
natureColors[&#39;colorA&#39;]; // => &#39;white&#39;
natureColors[&#39;colorB&#39;]; // => &#39;black&#39;</pre><div class="contentsignin">ログイン後にコピー</div></div>
Object.keys( NatureColors)
オブジェクト自体と列挙可能なプロパティ キー ['colorC', 'colorD']
を返します。 natureColors
simpleColors
プロトタイプ オブジェクトから継承されたプロパティが含まれます。ただし、Object.keys()
関数はそれらをスキップします。 Object.values()
および
同じ条件 (所有プロパティと列挙可能なプロパティ) を使用してオブジェクトのプロパティにアクセスします。見てみましょう: <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>let simpleColors = {
colorA: &#39;white&#39;,
colorB: &#39;black&#39;
};
let natureColors = {
colorC: &#39;green&#39;,
colorD: &#39;yellow&#39;
};
Object.values(natureColors); // => [&#39;green&#39;, &#39;yellow&#39;]
Object.entries(natureColors); // => [ [&#39;colorC&#39;, &#39;green&#39;], [&#39;colorD&#39;, &#39;yellow&#39;] ]</pre><div class="contentsignin">ログイン後にコピー</div></div>
let simpleColors = { colorA: 'white', colorB: 'black' }; let natureColors = { colorC: 'green', colorD: 'yellow' }; let enumerableKeys = []; for (let key in natureColors) { enumerableKeys.push(key); } enumerableKeys; // => ["colorC", "colorD", "colorA", "colorB"]

enumerableKeys 配列には、natureColors オブジェクト自身のプロパティのキーが含まれています:
および 'colorD'
。 さらに、
for...in
は、
プロトタイプから継承されたプロパティ キー ('colorA'
および ' colorB) を走査します。 「
。 Object.values() はプロパティ値を返します
の利点を区別するために、最初にプロパティ値を取得する方法を見てみましょう。 2017 年以前の目標はどのように達成されるのでしょうか?
最初に Object.keys()
を使用してプロパティ キーを収集し、次にプロパティ アクセサーを使用して値を追加の変数に保存します。例を見てみましょう:
let meals = { mealA: 'Breakfast', mealB: 'Lunch', mealC: 'Dinner' }; for (let key of Object.keys(meals)) { let mealName = meals[key]; // ... do something with mealName console.log(mealName); // => 'Breakfast' 'Lunch' 'Dinner' }
meals
是一个普通的JavaScript对象。使用Object.keys(meals)
和for...of
的循环枚举出对象键值。代码看起来很简单,但是可以通过去掉let mealName = meals[key]
来优化它。
通过使用Object.values()
可以直接访问对象属性值,可以实现优化。优化代码后如下:
let meals = { mealA: 'Breakfast', mealB: 'Lunch', mealC: 'Dinner' }; for (let mealName of Object.values(meals)) { console.log(mealName); // => 'Breakfast' 'Lunch' 'Dinner' }
由于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: 'Breakfast', mealB: 'Lunch', mealC: 'Dinner' }; for (let [key, value] of Object.entries(meals)) { console.log(key + ':' + value); // => 'mealA:Breakfast' 'mealB:Lunch' 'mealC:Dinner' }
Object.entries(meals)
返回meal对象的属性键和值到一个数组中。然后通过for...of
循环解构性参数let [key, value]
把数组中的值分配给key
和value
变量。
正如所见,访问的键和值现在已经是一种舒适而且易于理解的形式。由于Object.entries()
返回一个与数组解构性赋值相兼容的集合,因此没有必要添加额外的赋值或声明行。
Object.entries()
将普通对象导入到Map
时是有用的。由于Object.entries()
返回Map
构造函数所接受的格式:key
和value
成对。因此问题变得无关紧要。
让我们创建一个JavaScript对象并将其导出到Map
中:
let greetings = { morning: 'Good morning', midday: 'Good day', evening: 'Good evening' }; let greetingsMap = new Map(Object.entries(greetings)); greetingsMap.get('morning'); // => 'Good morning' greetingsMap.get('midday'); // => 'Good day' greetingsMap.get('evening'); // => 'Good evening'
new Map(Object.entries(greetings))
构造函数使用一个参数来调用,这个参数是greeting
对象中导出的数组的一个键值对。
如预期的那样,map
实例greetingsMap
包含greetings
对象导入的属性。可以使用.get(key)
方法访问这些数据。
有趣的是,Map
提供了与Object.values()
和Object.entries()
方法相同的方法(只有它们返回迭代器),以便提取Map
实例的属性值或键值对:
Map.prototype.values()
等价于Object.values()
Map.prototype.entries()
等价于Object.entries()
Map
提供了普通对象的改良版。你可以获得Map
的大小(对于一个简单的对象,你必须手动操作),并使它作为键或对象类型(简单对象把键当作一个字符串原始类型)。
我们来看看map
的.values()
和.entries()
方法返回什么:
let greetings = { morning: 'Good morning', midday: 'Good day', evening: 'Good evening' }; let greetingsMap = new Map(Object.entries(greetings)); [...greetingsMap.values()]; // =>['Good morning', 'Good day', 'Good evening'] [...greetingsMap.entries()]; // =>[['morning','Good morning'], ['midday','Good day'],['evening','Good evening']]
注意: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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











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

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

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

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

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

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

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

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