javascriptでテーブルの中身をソートして表示したい

実現したいこと

typescript内でprismaのdataをソートする処理を実装しています。

テーブルの中身をソートしてまとまりを作って表示させたいです。
このようなデータがあるとして
[
{
date: 2024/02/02,
company_name: 株式会社A,
type: 送信
},
{
date: 2024/02/03,
company_name: 株式会社B,
type: 送信
},
{
date: 2024/02/03,
company_name: 株式会社C,
type: 受信
},
{
date: 2024/02/05,
company_name: 株式会社D,
type: 送信
},
{
date: 2024/02/07,
company_name: 株式会社A,
type: 受信
},
{
date: 2024/02/02,
company_name: 株式会社A,
type: 受信
},
{
date: 2024/02/07,
company_name: 株式会社D,
type: 送信
},
{
date: 2024/02/05,
company_name: 株式会社B,
type: 受信
},
{
date: 2024/02/07,
company_name: 株式会社D,
type: 送信
},
{
date: 2024/02/07,
company_name: 株式会社D,
type: 送信
},
]

こちらのデータを新しい日付→会社名(同じ会社名がまとまるように)→typeも受信が上で送信が下に来るようにソートをしたいです。ソート後は以下を想定
{
date: 2024/02/07,
company_name: 株式会社A,
type: 受信
},
{
date: 2024/02/07,
company_name: 株式会社A,
type: 送信
},
{
date: 2024/02/07,
company_name: 株式会社D,
type: 送信
},
{
date: 2024/02/07,
company_name: 株式会社D,
type: 送信
},
{
date: 2024/02/05,
company_name: 株式会社B,
type: 受信
},
{
date: 2024/02/05,
company_name: 株式会社D,
type: 送信
},
{
date: 2024/02/03,
company_name: 株式会社B,
type: 送信
},
{
date: 2024/02/03,
company_name: 株式会社C,
type: 受信
},
{
date: 2024/02/02,
company_name: 株式会社A,
type: 送信
},
{
date: 2024/02/02,
company_name: 株式会社A,
type: 受信
},

発生している問題・分からないこと

sortがうまくいかずどのように複数の項目をsort関数のreturn 1 ,-1などでソートしていいか分かりません。

該当のソースコード

Typescript

1sort((a, b) => {2 if (a.date < b.date) {3 if (a.company_name < b.company_name) {4 if (a.type < b.type) {5 return 1;6 }7 return 1;8 }9 return 1;10 } else {11 if (a.company_name < b.company_name) {12 if (a.type < b.type) {13 return 1;14 }15 return -1;16 }17 return -1;18 }19}

試したこと・調べたこと

上記の詳細・結果

sortの複数の仕方など調べました。

補足

sortのreturnがこんがらがってよくわからなくなっています。申し訳ございません。

コメントを投稿

0 コメント