javascript - 按升序对对象数组进行排序,但将所有零放在最后

标签 javascript

如果我有一个对象数组:

[{
    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/

相关文章:

javascript - 通过 jQuery 设置值后验证字段

javascript - 如何从子组件内部更新 React Context?

javascript - 重新渲染两个 Angular 数据表

javascript - 隐藏带有过渡的div

javascript - Jest 中未定义 AnimationEvent

javascript - 无法读取未定义的属性 '_id'

javascript - 如何遍历相同类型的所有 html 元素但对每个元素应用不同的更改?

javascript - Google Analytics Analytics.js 2 两个跟踪器发生碰撞?

javascript - 如何提交并转发到新链接

javascript - 从 jquery 范围调用到类函数