序文通常、Object クラスでは Object.keys、Object.values、Object.assign などの静的メソッドをよく使用しますが、Object.entries メソッドを使用することはほとんどありません。この記事では、Object.entries メソッドに関する 2 つのヒントを説明します。 効果 Object.entries() メソッドは、指定されたオブジェクトの列挙可能なプロパティのキーと値のペアの配列を、for…in ループによって返されるのと同じ順序で返します (違いは、for-in ループはプロトタイプ チェーン内のプロパティも列挙することです)。 例 const obj = { foo: 'bar', baz: 42 }; console.log(Object.entries(obj)); // [ ['foo', 'bar'], ['baz', 42] ] // 配列のようなオブジェクト 定数obj = { 0: 'a', 1: 'b', 2: 'c' }; console.log(Object.entries(obj)); // [ ['0', 'a'], ['1', 'b'], ['2', 'c'] ] // ランダムなキー順序を持つ配列のようなオブジェクト 定数 anObj = { 100: 'a', 2: 'b', 7: 'c' }; console.log(Object.entries(anObj)); // [ ['2', 'b'], ['7', 'c'], ['100', 'a'] ] // getFoo は列挙できないプロパティです const myObj = Object.create({}, { getFoo: { value() { return this.foo; } } }); myObj.foo = 'bar'; console.log(Object.entries(myObj)); // [ ['foo', 'bar'] ] // 非オブジェクト引数はオブジェクトに強制変換されます console.log(Object.entries('foo')); // [ ['0', 'f'], ['1', 'o'], ['2', 'o'] ] // キーと値をうまく反復処理する 定数obj = { a: 5, b: 7, c: 9 }; Object.entries(obj) の (const [キー、値]) { console.log(`${key} ${value}`); // "a 5", "b 7", "c 9" } // または、配列の追加機能を使用する Object.entries(obj).forEach(([キー, 値]) => { console.log(`${key} ${value}`); // "a 5", "b 7", "c 9" 1. 共通オブジェクトを反復処理するには for...of を使用しますフロントエンドの初心者の多くは、次のようなコードを書いたことがあるかもしれません。 obj = { a: 1、 2 倍 } for (let objの値) { // ... } しかし、実行すると、エラーが報告されることがわかります。
したがって、通常のオブジェクトのトラバースは、トラバースの均一化になります。ただし、 for...in はオブジェクト自身のプロパティを走査するだけでなく、オブジェクトのプロトタイプも走査するため、使用時にフィルターを追加する必要もあります。次に例を示します。 for (let key in obj) { Object.prototype.hasOwnProperty.call(obj, key) の場合 { // ... } } これはあまりエレガントではないことがわかります。通常のオブジェクトを for...of を使用して走査できない理由は、通常のオブジェクトがイテレータ インターフェースを実装していないためです (JS イテレータについては特別な記事を書く予定です)。 JS 配列はイテレータ インターフェイスを実装しているため、Object.entries を通じて取得されたキーと値の配列は for...of を使用して走査できます。 Object.entries(obj) の (let [キー, 値]) { // ... } Object.entries は、プロトタイプのプロパティを除く、オブジェクト自身の列挙可能なプロパティのキーと値のペアの配列を返します。 2. 通常のオブジェクトとMapオブジェクト間の変換プロジェクトでは、通常のオブジェクトを Map オブジェクトに変換し、トラバーサルで引き続き使用していることがわかりました。 obj = { a: 1、 2 倍 } map = new Map(); for (let key in obj) { Object.prototype.hasOwnProperty.call(obj, key) の場合 { map.set(キー、obj[key]); } } 実際、Map コンストラクターは初期化のためにキーと値のペアの配列を受け入れることができるため、Object.entries を使用して通常のオブジェクトを Map オブジェクトに変換できます。 map = new Map(Object.entries(obj)); を作成します。 では、Map オブジェクトを通常のオブジェクトに戻すにはどうすればよいでしょうか?まだトラバーサルを使用していますか?いいえ、Object.fromEntries 静的メソッドを使用して変換できます。 obj = Object.fromEntries(map); とします。 この時点では、通常のオブジェクト、キーと値のペアの配列、および Map オブジェクト間の変換関係をまだ理解していない方も多いかもしれません。図でまとめます。
要約する皆さんが知らないJavaScriptのObject.entriesの使い方についての記事はこれで終わりです。より関連性の高いjsのObject.entriesの使い方については、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 参照する
以下もご興味があるかもしれません:
|
<<: html2canvasで画像が正常にキャプチャできない時の解決方法
>>: docker実行時に異なるポートを占有する2つのポートを起動する問題を解決する
ブラウザ モジュールの主な機能は、http リクエスト ヘッダーの「User-Agent」の値とブラ...
序文ブロガーが使用しているサーバーは Alibaba Cloud から購入したものです。実際、Ali...
1. Redisイメージを取得するdocker pull redis 2. それぞれポート6379、...
この記事ではMySQL 8.0.24バージョンのインストールと設定方法を記録し、皆さんと共有しますM...
序文著者は、アプリケーションからフレームワーク、オペレーティング システムに至るまで、あらゆるコード...
1: dockerにmongodbをインストールするステップ1: dockerにmongodbをイン...
1. はじめにMySQL にログインすると、次のような警告が表示されることがよくあります。警告: コ...
ウェブページに表示されるプレーヤーは、WMP/RealPlayer/Flash Player に過ぎ...
1. HTMLタグの前に次のような文を追加するのが最適です。 <!DOCTYPE HTML P...
目次1. ElementUIで基本的なスタイルを構築する2. [送信]ボタンをクリックして、アカウン...
絶対位置決め方式: (1)親要素を相対配置に設定します。親要素の高さを指定しない場合は、左の子要素の...
2008年5月12日に四川省汶川市で発生した地震により、多くの命が失われ、遺憾なことと存じます。国務...
この記事では、Fedora 28 に i3 をインストールして簡単に設定する方法を説明します。 1....
1. 問題Windows 上の Eclipse を使用して開発されたプロジェクトは Windows ...
1. リンク解除機能ハード リンクの場合、unlink はディレクトリ エントリを削除し、inode...