sort関数について
- 単純なsort
文字コード順に並び替えられる。
const suji = [50, 10, 100];
console.log(suji.sort()); // [ 10, 100, 50 ]
- 数値順に並び替えsort
数値順に並び変えるのなら、以下のように比較関数にします。これで、数値の大きさ順に配列が並び替える
const suji = [50, 10, 100];
console.log(suji.sort(function(x, y) {
return x - y;
})); // [ 10, 50, 100 ]
ここでしていることは、最初は50 - 10をして正数が返るから50は10より後で、50 - 100では負数が返るから50は100より前に来るというようにしているだけです。それを配列内の値で、順々に関数のxとyの引数に渡して位置を並び替えています。
以下のURLが非常に分かりやすい。
参考:https://furukawahiroaki.com/javascript-sort.html
連想配列のsort
ポイントは連想配列のkeyから配列のindexを取得できる findIndex
メソッドを使用すること。
以下はarrのnameの順番に基づいて、objの配列を変更している。
let arr = [
{name:'hoge',num:9},
{name:'huga',num:11},
{name:'test',num:13},
]
let obj = [
{name:'huga',num:10},
{name:'hoge',num:5},
{name:'test',num:11}
]
obj.sort(function(x,y){
return arr.findIndex(x.name) - arr.findIndex(y.name)
})
console.log(obj)
//出力
// obj = [
// {name:'hoge',num:5},
// {name:'huga',num:10},
// {name:'test',num:11}
// ]