iT邦幫忙

0

js sort array by multiple (number) fields

js

JS 排序問題,如果想同時排序長度和字串,做出以下排序資料,該如何處理?
ORDER BY LENGTH(sort) ASC, sort ASC
排序資料:
var items = '[
{
"sort": "ab"
},
{
"sort": "adc"
},
{
"sort": "ak"
}
]';
排序結果:
var items = '[
{
"sort": "ab"
},
{
"sort": "ak"
},
{
"sort": "adc"
}
]';

我只想的到比較笨的方法
先用filter過濾長度在sort排序
之後concat結合

1 個回答

2
fillano
iT邦超人 1 級 ‧ 2020-02-11 13:39:18
最佳解答

厲害,超人一出手,就知有沒有~
/images/emoticon/emoticon12.gif

不過下面排起來怪怪的,za, zz 應該比we前面才對

[{"sort":"ab"},{"sort":"ak"},{"sort":"za"},{"sort":"zz"},{"sort":"we"},{"sort":"adc"},{"sort":"zbc"}]

發現 return a.sort > b.sort; 這裡好像不大對
目前把a.sort > b.sort改成以下就正常了

if (a.sort > b.sort) {
    return 1;
} else if (a.sort == b.sort) {
    return 0;
} else {
    return -1;
}
fillano iT邦超人 1 級 ‧ 2020-02-11 16:10:09 檢舉

XD 沒仔細測試過就會這樣...

我要發表回答

立即登入回答