#やりたいこと
Object.js
のオブジェクトのキーを値の降順で並び替えた、sortedKey.js
のような配列を作成したい。
Object.js
let scores = {
yamada: 60,
suzuki: 50,
takahashi: 100,
tanaka: 80,
ito: 20
};
sortedKey.js
let sortedKeys = [takahashi, tanaka, yamada, suzuki, ito];
#結論
sort.js
let keys = Object.keys(scores); //scoresのキーの配列を作成
let sortedKeys = keys.sort(function(a, b) {
return scores[b] - scores[a];//scoresの各キーの値でソート(降順)。昇順ならブラケット内のa,bを逆にする。
});
console.log(sortedKeys); // [ 'takahashi', 'tanaka', 'yamada', 'suzuki', 'ito' ]
Object.keys()
で元のオブジェクトのキーの配列を作成したあと、比較関数内で元のオブジェクトの値をブラケット記法で取得し、その値を減算することで、キーを値でソートした配列を作成することができた。
sort
の引数となる比較関数の仕様については、よろしければこちらの記事をご覧ください。
JavaScript sortにおける比較関数の仕様