1. ホーム
  2. javascript

[解決済み] JavaScriptでマップを値で並べ替えるには?

2022-02-18 15:27:47

質問

このマップを値で並べ替えるには?

var map = new Map();
map.set('orange', 10);
map.set('apple', 5);
map.set('banana', 20);
map.set('cherry', 13);

解決方法は?

ヨは、別のアプローチで、変更することができます Symbol.iterator Map.prototype[@@iterator]() を使用すると、カスタムソートされた結果を得ることができます。

var map = new Map();

map.set("orange", 10);
map.set("apple", 5);
map.set("banana", 20);
map.set("cherry", 13);

map[Symbol.iterator] = function* () {
    yield* [...this.entries()].sort((a, b) => a[1] - b[1]);
}

for (let [key, value] of map) {     // get data sorted
    console.log(key + ' ' + value);
}

console.log([...map]);              // sorted order
console.log([...map.entries()]);    // original insertation order
.as-console-wrapper { max-height: 100% !important; top: 0; }