如果我有一个对象数组:
[{
val: 0
}, {
val: 1
}, {
val: 0
}, {
val: 3
}]
如何将其升序排序,但将零结尾保留,如下所示:
[{val:1}, {val:3}, {val: 0},{val: 0}]
如预期的那样,排序将零放在顶部。即使我添加逻辑以将零排序到最后:
array.sort((a,b) => {
if (a.val === 0 || b.val === 0) return 1;
return a.val < b.val;
});
最佳答案
如果a.val
为0,则返回1
。如果b.val
为0,则返回-1
var array = [{val: 0}, {val: 1}, {val: 0}, {val: 3}];
array.sort((a, b) => {
if (a.val === 0) return 1; //Return 1 so that b goes first
if (b.val === 0) return -1; //Return -1 so that a goes first
return a.val - b.val;
});
console.log(array);
关于javascript - 按升序对对象数组进行排序,但将所有零放在最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50933086/