JavaScriptのsortで並び替え
一覧画面の操作や、データ整理など、クライアント側で並び替えさせたい場合があります。
sort
関数を使って並び替えします。
デフォルトのソート順
const ary = ['な', 'た', 'さ', 'か', 'あ', 5, 44, 3, 22, 1]; ary.sort(); console.log(ary); // [1, 22, 3, 44, 5, 'あ', 'か', 'さ', 'た', 'な']
※特に条件を指定しない場合、文字列に変換されて並び替えが行われる
参考: Array.prototype.sort()
compareFunction (比較関数) が与えられなかった場合、undefined 以外のすべての配列要素は文字列に変換され、文字列が UTF-16 コード単位順でソートされます。
ただ、大体の場合は「新着順」にしたいなど、データを見て任意に並び替えることが多いかと思います。
任意に並び替えるようソート順を定義する関数を設定します。
ソート順を設定する
// 並び替えするオブジェクト const obj = { post: [ { date: 20220101, comment: "い" }, { date: 20220102, comment: "む" }, { date: 20220103, comment: "ね" } ] } // dateの降順で、postを出力 obj.post.sort((a, b) => { return a.date < b.date ? 1 : -1; }); console.log(JSON.stringify(obj.post, null, "\t")); /* [ { "date": 20220103, "comment": "ね" }, { "date": 20220102, "comment": "む" }, { "date": 20220101, "comment": "い" } ] */
並び替えの条件を使いまわしたい場合は、関数にしておきます。
// 関数で宣言 const compare = (a, b) => { return a.date < b.date ? 1 : -1; } obj.post.sort(compare); console.log(JSON.stringify(obj.post, null, "\t"));