0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

連想配列をsortする

Posted at

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}
// ]

参考:https://qiita.com/Test_test/items/7d532f445f2980e896d0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?