[解決済み] JavaScriptはオブジェクトのプロパティの順序を保証するか?
2022-03-22 15:31:28
質問
このようなオブジェクトを作成すると
var obj = {};
obj.prop1 = "Foo";
obj.prop2 = "Bar";
生成されたオブジェクトは 常に はこのように見えますか?
{ prop1 : "Foo", prop2 : "Bar" }
つまり、プロパティは私が追加したのと同じ順番になるのでしょうか?
解決方法は?
オブジェクトの反復処理順序は以下の通りです。 ある種のルール はES2015からですが 挿入順序に(常に)従っているわけではない . 簡単に言うと、文字列のキーは挿入順、数値のようなキーは昇順の組み合わせで反復処理されます。
// key order: 1, foo, bar
const obj = { "foo": "foo", "1": "1", "bar": "bar" }
配列または
Map
オブジェクト
は、より良い方法で実現することができます。
Map
と類似している部分があります。
Object
と
は、挿入順に反復されるキーを保証します。
例外なく
Mapのキーは順番に並んでいますが、オブジェクトに追加されたキーはそうではありません。したがって、Map オブジェクトを反復処理すると、挿入された順にキーが返されます。(ECMAScript 2015 仕様では、オブジェクトは string および Symbol キーの作成順序を保持するので、文字列キーだけを持つオブジェクトの走査は挿入順序のキーを返すことになることに注意してください)
注意点として、ES2015以前はオブジェクト内のプロパティの順番は全く保証されていませんでした。オブジェクトの定義 より ECMAScript 第三版 (pdf) :
<ブロッククオート4.3.3 オブジェクト
オブジェクトは 型はObjectです。 プロパティの順序不同のコレクションである それぞれの には、プリミティブな値、オブジェクト、または 関数です。に格納されている関数は オブジェクトのプロパティは メソッドを使用します。
関連
-
JavaScriptのStringに関する共通メソッド
-
jq は html ページとデータを動的に分割する。
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み】未定義のオブジェクトプロパティを検出する
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueはopenlayersを使用してスカイマップとガオードマップをロードする
-
vueにおけるv-forループオブジェクトのプロパティ
-
[解決済み】Uncaught SyntaxError: JSONの位置0に予期しないトークンuがあります。
-
[解決済み】Node.js getaddrinfo ENOTFOUND
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】JavaScriptの配列でforEachが関数でない不具合
-
[解決済み】TypeScript-のAngular Frameworkエラー - "exportAsがngFormに設定されたディレクティブはありません"
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED
-
[解決済み】ReactJSでエラー発生 Uncaught TypeError: Super expression は null か関数でなければならず、undefined ではありません。
-
フロントエンド null のプロパティ 'disabled' を読み取れない 問題が解決された