JavaScriptで複数条件でソートする

あれどうやるんだ?ってなったのでメモ。

 

ソース

[
  {
    age: 40,
    money: 300,
  },
  {
    age: 80,
    money: 4000,
  },
  {
    age: 10,
    money: 1,
  },
  {
    age: 100,
    money: 500,
  },

  {
    age: 40,
    money: 3,
  },
  {
    age: 40,
    money: 3000,
  },
].sort((a, b) => {
  if (a.age === b.age) {
    return b.money - a.money;
  }
  return b.age - a.age;
});

 

実行結果

 

ソースの意図としては

  • 「年齢」と「どれだけお金を持っているか」を表すオブジェクトの配列がある
  • この配列を「年齢が高い順」、年齢が同じ場合は「お金を持っている順」に並び替える

みたいな感じです。

 

並び替えてる部分は以下です。

].sort((a, b) => {
  if (a.age === b.age) {
    return b.money - a.money;
  }
  return b.age - a.age; 

年齢が同じ場合は(a.age === b.age)、年齢で比較する(b.money – a.money)としているのがポイントです。

 

sortってマイナスにしたら降順になるんだっけ?どっちだっけ?っていつも迷う感。

 

おわり

 

コメント

タイトルとURLをコピーしました