javascipr sortまとめ

  • デフォルト 文字列比較 昇順 ['1','2','3','4',,,,]
Array.sort()
Array.sort((a,b) => a.localeCompare(b))

デフォルト使うことってあまりないよね....。

  • 数値昇順 [1,2,3,4,,,,]
Array.sort( (a,b) => a-b )
  • 数値降順 [10,9,8,7,,,,]
Array.sort( (a,b) => b-a )
  • ソートしない
Array.sort((a,b) => 0)
  • 文字列比較 降順
Array.sort((a,b) => b.localeCompare(a))
Array.sort().reverse()
  • オブジェクトの比較 結論だけ
    • 複数条件の場合は||でつなぐ
    • 昇順 a-b,降順b-a
    • 下の例の場合 オブジェクトのタイプを昇順で比較したのちに、IDを降順で比較
Array.sort((a,b) => a.type - b.type || b.id - a.id || ...)
  • 優先順位リストでソートする
var priorityList = ['りんご','みかん','ばなな'];
priorityList.reverse(); // 優先順位の比較をするために反転する
var fruitsList   = ['ぶどう','オレンジ','ばなな','もも','みかん'];
fruitsList.sort( (a,b) => 
  priorityList.indexOf(b)-priorityList.indexOf(a)
);
fruitsList.shift()
  • シャッフル
arr.sort((a,b) =>
 (Math.round(Math.random())-0.5)
)
var arr = [
{id:1,hp:10,mp:1},
{id:2,hp: 8,mp:7},
{id:3,hp:10,mp:4},
{id:4,hp:10,mp:4},
{id:5,hp:41,mp:8},
];

arr.sort((a,b) =>
 b.hp-a.hp || a.mp-b.mp || (Math.round(Math.random())-0.5)
)