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) )