今回、下記について調べてみました。
- オブジェクト型を配列に変換する方法
- 配列の要素を参照した上でソートする方法
オブジェクト型を配列に変換する方法
// サンプルのオブジェクト
const obj = {
A: 3000,
B: 9000,
C: 6000,
}
// オブジェクトを配列に変換
const sortedEntries = Object.entries(obj)
// [ [ 'A', 3000 ], [ 'B', 9000 ], [ 'C', 6000 ] ]
これで、オブジェクト型から配列型への変換に成功しました。
配列の要素を参照した上でソートする方法
sort()
関数
sort()
関数で配列の要素を並び替えることができます
// 2つの引数はどちらも配列の要素として引数を受け取り、比較、計算する
配列.sort(a, b) => b[1] - a[1]
b[1] - a[1]
の結果次第で順番を変えていく
実際にsort()
してみた
// オブジェクトの数値型のvalueの降順にソートした上で変換する場合
const sortedEntries = Object.entries(obj).sort((a, b) => b[1] - a[1])
// [ [ 'B', 9000 ], [ 'C', 6000 ], [ 'A', 3000 ] ]
// もし昇順にするなら
const sortedEntries2 = Object.entries(obj).sort((a, b) => a[1] - b[1])
// [ [ 'A', 3000 ], [ 'C', 6000 ], [ 'B', 9000 ] ]
これで、内側の配列の1番目の数値の大きさを参照した上で、内側の配列の順番が昇順または降順でソートされるようになりました。
今回の.sort((a, b) => a[1] - b[1])
の場合、
戻り値a[1] - b[1]
の結果が正の数なら昇順、
戻り値a[1] - b[1]
の結果が負の数なら降順でソートしてくれます。
まとめ
引数の値を参照し、計算した結果の戻り値が正か負か、でソートの条件が変化する、ということですね。
これで、並び替えに成功しました。