【问题标题】:Sort array of objects in javascript with two sort conditions使用两个排序条件对javascript中的对象数组进行排序
【发布时间】:2021-02-23 06:14:30
【问题描述】:

我的对象数组如下。

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
},
];

我的排序条件是

  1. 值为 NOT null 的 pinnedBy 项应位于顶部,并且应按值降序排序。
  2. 所有其他项目应位于 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
}
];

我怎样才能做到这一点?

【问题讨论】:

    标签: javascript arrays sorting object


    【解决方案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; }

    【讨论】:

      猜你喜欢
      • 2018-11-01
      • 2021-06-11
      • 2016-10-02
      • 1970-01-01
      • 2012-11-02
      • 2022-06-17
      • 1970-01-01
      • 2022-12-02
      相关资源
      最近更新 更多