为了账号安全,请及时绑定邮箱和手机立即绑定

使用两种排序条件对 JavaScript 中的对象数组进行排序

使用两种排序条件对 JavaScript 中的对象数组进行排序

侃侃无极 2023-07-29 16:03:39
我的对象数组如下。let obj=[{  id:1,  pinnedBy:"abc",  value:9},{  id:2,  pinnedBy:null,  value:10},{  id:3,  pinnedBy:"abc",  value:11},{  id:4,  pinnedBy:null,  value:12},];我的排序条件是pinnedBy 具有值 NOT null 的项目应位于顶部,并且应按值降序排序。所有其他项目应位于 pinnedBy 项目下方,并且应按值降序排序。应用排序后结果将是obj=[{  id:3,  pinnedBy:"abc",  value:11},{  id:1,  pinnedBy:"abc",  value:9},{  id:4,  pinnedBy:null,  value:12},{  id:2,  pinnedBy:null,  value:10}];我怎样才能实现这个目标?
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

您可以按布尔值的增量排序,然后按value属性排序。


let array = [{ id: 1, pinnedBy: "abc", value: 9}, { id: 2, pinnedBy: null, value: 10 }, { id: 3, pinnedBy: "abc", value: 11 }, { id: 4, pinnedBy: null, value: 12 }];


array.sort((a, b) =>

    (a.pinnedBy === null) - (b.pinnedBy === null) ||

    b.value - a.value

);


console.log(array);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反对 回复 2023-07-29
  • 1 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信