JavaScriptオブジェクトをキーで並べ替える 質問する

JavaScriptオブジェクトをキーで並べ替える 質問する

JavaScript オブジェクトをキーで並べ替える必要があります。

したがって、次のようになります。

{ 'b' : 'asdsad', 'c' : 'masdas', 'a' : 'dsfdsfsdf' }

次のようになります:

{ 'a' : 'dsfdsfsdf', 'b' : 'asdsad', 'c' : 'masdas' }

ベストアンサー1

この質問に対する他の回答は時代遅れであり、実装の現実と一致しておらず、ES6 / ES2015 仕様が公開された今では正式に誤りとなっています。


見るAxel Rauschmayer 著『Exploring ES6』プロパティ反復順序に関するセクション:

プロパティ キーを反復処理するすべてのメソッドは同じ順序で実行されます。

  1. まず、すべての配列インデックスを数値順にソートします。
  2. 次に、すべての文字列キー (インデックスではない) を、作成された順序で表示します。
  3. 次に、すべてのシンボルを、作成された順序で表示します。

つまり、JavaScript オブジェクトは実際には順序付けられており、キー/プロパティの順序は変更できます。

オブジェクトをキー/プロパティでアルファベット順に並べ替える方法は次のとおりです。

const unordered = {
  'b': 'foo',
  'c': 'bar',
  'a': 'baz'
};

console.log(JSON.stringify(unordered));
// → '{"b":"foo","c":"bar","a":"baz"}'

const ordered = Object.keys(unordered).sort().reduce(
  (obj, key) => { 
    obj[key] = unordered[key]; 
    return obj;
  }, 
  {}
);

console.log(JSON.stringify(ordered));
// → '{"a":"baz","b":"foo","c":"bar"}'

ES5 エンジンとの互換性のためにvar、 の代わりにを使用します。const

おすすめ記事