LoginSignup
0
0

【メモ】オブジェクトを配列に変換とsort()【Object.entries()】

Last updated at Posted at 2023-06-03

今回、下記について調べてみました。

  1. オブジェクト型を配列に変換する方法
  2. 配列の要素を参照した上でソートする方法

オブジェクト型を配列に変換する方法

// サンプルのオブジェクト
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]の結果が負の数なら降順でソートしてくれます。

まとめ

引数の値を参照し、計算した結果の戻り値が正か負か、でソートの条件が変化する、ということですね。

これで、並び替えに成功しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0