我的对象数组如下。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; }
添加回答
举报
0/150
提交
取消