我有一個物件陣列,我想根據xxx版本號字串對陣列進行排序。但似乎按照我的意愿對訂單進行排序存在問題。
我已經看到了現有的解決方案,例如
uj5u.com熱心網友回復:
9.10大于9.2怎么處理?
在這里,您沒有將它們視為常規浮點值。因此,如果您忽略.,您可以輕松地比較它們。
試試這個
my_list.sort((a, b) => {
const _a = a['xxx'].split('.')
const _b = b['xxx'].split('.')
if (Number(_a[0]) < Number(_b[0])) {
return -1;
}
if (Number(_a[0]) > Number(_b[0])) {
return 1;
}
if (Number(_a[1]) < Number(_b[1])) {
return -1;
}
if (Number(_a[1]) > Number(_b[1])) {
return 1;
}
return 0;
});
uj5u.com熱心網友回復:
這是一個通用的解決方案
let my_list = [
{"xxx": "9.6", "no_of_occurrence": 1 },
{"xxx": "9.2", "no_of_occurrence": 1},
{"xxx": "9.11.3", "no_of_occurrence": 1},
{"xxx": "9.11.1", "no_of_occurrence": 1},
{"xxx": "9.10", "no_of_occurrence": 1}
];
my_list.sort((a, b) => {
let va = a.xxx.split("."), vb = b.xxx.split("."), i = 0
while(i < va.length && i < vb.length && ( va[i]) == ( vb[i]))
i ;
return ( va[i]) - ( vb[i]);
})
console.log(my_list)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490607.html
標籤:javascript 数组
