複数の条件でソートをする方法
Q&A
解決したいこと
TypeScriptで以下のリストを以下の条件に従ってソートをしたいです。
よろしくお願いいたします。
1.orderList内のorderNumの昇順でソートする。
(orderListが空の場合は一番下に入れる)
2.sCodeの昇順にする
3.sCodeが5のもののみpCodeの昇順にする
4.上記の並べ替えを保った状態で、kCodeの昇順に並べ替える
let list : {
id: string;
sCode: string;
pCode: string;
kCode: string;
orderList?:
{
orderNum: number,
index: number
}[]
}[] = [
{
id: '1',
sCode: '5',
pCode: '100',
kCode: '5500',
orderList: [
{
orderNum: 2,
index: 1
},
{
orderNum: 3,
index: 1
}
]
},
{
id: '2',
sCode: '5',
pCode: '100',
kCode: '5600',
orderList: []
},
{
id: '3',
sCode: '6',
pCode: '101',
kCode: '5500',
orderList: [
{
orderNum: 2,
index: 1
},
{
orderNum: 3,
index: 1
}
]
},
// こんな内容のリストが続く…
]
自分で試したこと
複数条件でのソートの方法がわからなかったので、
まずlistをループさせてorderListを並び替える。
そのあと、orderListがあるものとないものをfilterで分けてconcatで結合
その後、sCodeでsortをしたのちにsCodeが5のものを抽出して…
のように小分けで何回も抽出して結合する処理を繰り返していました。
この方法だと優先する条件を保ったまま、4の並び替えをすることができないように思っています。