我正在尝试根据几个属性对对象数组进行排序。为了简单起见,这是我的数组
let arr = [
{
date: unixDate,
code: "1001"
},
{
date: unixDate,
code: "0001"
},
{
date: unixDate,
code: "0000"
},
{
date: unixDate,
code: "0001"
},
{
date: unixDate,
code: "00001"
}
]
我想要的订单是
我当前的代码是
arr.sort((a,b) => {
if(a.code === '0000') {
return (a.code - b.code) || (a.date - b.date)
} else {
return (b.date - a.date)
}
})
哪个没有在顶部对0001代码进行排序,我也不知道如何解决它。任何帮助表示赞赏。
谢谢
答案 0 :(得分:0)
您可以采用一组代码并在此之后进行排序,然后如果两个元素在日期之后获得相同的代码进行排序:
const codes = ["0001", "0000", "1001", "00001"];
arr.sort((a, b) => (
codes.indexOf(a.code) - codes.indexOf(b.code) ||
a.date - b.date
));
答案 1 :(得分:0)
priorities[code] || 0
。
var priorities = {
'0001': 1,
'0000': 2,
'1001': 3,
'00001': 4
}
let arr = [ { date: 'unixDate', code: "1001" }, { date: 'unixDate', code: "0001" }, { date: 'unixDate', code: "0000" }, { date: 'unixDate', code: "0001" }, { date: 'unixDate', code: "00001" } ];
arr.sort(function(a, b) {
return (priorities[a.code] || 0) - (priorities[b.code] || 0) || a.date - b.date
});
console.log(arr)