【Javascript】オブジェクトの配列でプロパティの値によりソート

プロパティ値でオブジェクト配列をソートする

javascriptで配列をソートするには、sort()メソッドを使います。

sort()メソッドには並び替えのルールを関数として渡すことができます。例えば、countプロパティを持ったオブジェクトのanimals配列をcountの値でソートするコード例は下記です。

let animals = [
  {name: 'dog', count: '2'},
  {name: 'cat', count: '4'},
  {name: 'bird', count: '1'}
]

// countで昇順ソート
animals.sort((a, b) => {
  return a.count - b.count
})

console.log(animals)
// [
//   {name: 'bird', count: '1'},
//   {name: 'dog', count: '2'},
//   {name: 'cat', count: '4'}
// ]

sort()に渡す関数は、数値を返すようにします。負の数を返すとaはbの前、正の数を返すとaはbの後というようにソートされます。

この仕様を使って下のように、あるプロパティがtrueのものだけ先頭に持ってくるというようなこともできます。

let animals = [
  {name: 'dog', flag: false},
  {name: 'cat', flag: true},
  {name: 'bird', flag: false},
  {name: 'snake', flag: true}
]

// flag=trueを先頭にソート
animals.sort((a, b) => {
  if(a.flag){
    return -1
  }else{
    return 1
  }
})

console.log(animals)
// [
//   {name: "snake", flag: true},
//   {name: "cat", flag: true},
//   {name: "dog", flag: false},
//   {name: "bird", flag: false}
// ]

sort()について詳細は下記を参照ください。

コメント