序文通常、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つのポートを起動する問題を解決する
MySQL 5.7.8 以降では、JSON テキストでデータを効率的に取得できるネイティブ JSON...
目次01 よくある故障 1 02 よくある欠陥 2 03 よくある欠陥 3 04 よくある欠陥 4 ...
具体的なコードは次のとおりです。 HTMLコードは次のとおりです <div class=&qu...
この記事では、タブ切り替え効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...
HTML フォームは、さまざまな種類のユーザー入力を収集するために使用されます。次のコードは、HTM...
目次1. JDKをインストールする2. Jenkinsをインストールする3. Jenkinsの設定を...
今夜の夕食後にノートパソコンの電源を入れたところ、問題が発生しました。通常、コンピューターがスリープ...
まず公式サイトにアクセスしてダウンロードし、MySQLダウンロードをクリックします。 ダウンロードし...
最近、顔コレクションに関するプロジェクトに取り組んでいましたが、フロントエンドモジュールを書いている...
1 はじめにバイナリ ログは、データを持つ、またはデータを変更する可能性がある SQL ステートメン...
目次1. MySQLのコンパイルとインストール: 2. 最初のマルチインスタンス3307を準備する3...
コア資産管理プロジェクトでは、el-transfer にドラッグ アンド ドロップによる並べ替えと、...
負荷分散の概要Nginx の負荷分散実装を紹介する前に、負荷分散の分類について簡単に説明します。負荷...
一つの環境Alibaba Cloud Server: CentOS 7.4 64 ビット (RedH...
私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadru...