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

我的对象数组如下。


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

}

];

我怎样才能实现这个目标?


侃侃无极
浏览 97回答 1
1回答

九州编程

您可以按布尔值的增量排序,然后按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; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript