Open1

[javascript]カスタムソートをつくる

TakeTake

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

ソート順を定義する関数を指定することでソート順をカスタマイズすることができる。
例えば特定のカテゴリをリストの最初にしたい場合などで使用できる。

 type ElementType = "fire" | "wind" | "water" | "earth" | "rigth" | "dark" | "none";
const SortMap: { [key in ElementType]: number } = {
  fire: 1,
  wind: 2,
  water: 3,
  earth: 4,
  rigth: 5,
  dark: 6,
  none: 7,
};

var arr = [
{name:"taro",hp:10,mp:1,type: "fire"},
{name:"taich",hp: 8,mp:7,type: "wind"},
{name:"haru",hp:10,mp:4,type: "warter"},
{name:"ken",hp:10,mp:4,type: "earth"},
{name:"mari",hp:41,mp:8,type: "fire"},
];

arr.sort((a,b) =>
 b.hp-a.hp || a.type-b.type || a.localeCompare(b)}
// 左の条件から並び替え
// a-b 昇順
// b-a 降順

文字列の並び替えはlocaleCompareが便利
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/localeCompare