1. ホーム
  2. javascript

[解決済み】ES6マップオブジェクトをソートすることは可能ですか?

2022-02-04 02:08:07

質問

es6の地図オブジェクトのエントリーをソートすることは可能ですか?

var map = new Map();
map.set('2-1', foo);
map.set('0-1', bar);

の結果になります。

map.entries = {
    0: {"2-1", foo },
    1: {"0-1", bar }
}

キーに基づいてエントリーをソートすることは可能ですか?

map.entries = {
    0: {"0-1", bar },
    1: {"2-1", foo }
}

解決するには?

MDNドキュメントによると。

Mapオブジェクトは、その要素を挿入順にイテレートします。

こんなやり方もあるんですね。

var map = new Map();
map.set('2-1', "foo");
map.set('0-1', "bar");
map.set('3-1', "baz");

var mapAsc = new Map([...map.entries()].sort());

console.log(mapAsc)

使用方法 .sort()の場合、配列は各要素の文字列変換に従って、各文字のユニコードコードポイントの値に従ってソートされることを覚えておいてください。つまり 2-1, 0-1, 3-1 は正しくソートされます。