根据一个可能为空的属性对数组进行排序

问题描述 投票:0回答:1

我有一个对象数组。

let items = [
  { name: 'eric', value: 1 },
  { name: 'bob', value: 4 },
  { name: 'michael', value: 0 },
  { name: 'john', value: 3 },
  { name: 'brad', value: null },
  { name: 'martin', value: 2 },
  { name: 'chris', value: null }
];

我想对我的数组进行排序,这样就可以通过 "value "属性对对象进行排序,如果它是空的,就把对象放在数组的底部。

  { name: 'michael', value: 0 },
  { name: 'eric', value: 1 },
  { name: 'martin', value: 2 },
  { name: 'john', value: 3 },
  { name: 'bob', value: 4 },
  { name: 'brad', value: null },
  { name: 'chris', value: null }

->

我已经试过了。

items.sort((a, b) => {
    return (a.orde ===null)-(b.ordre===null) || +(a.ordre>b.ordre)||-(a.ordre<b);
});

但似乎没有用

有什么建议?

javascript typescript sorting ecmascript-6 ecmascript-5
1个回答
1
投票

你可以检查 null 然后再按值排序。

let items = [{ name: 'eric', value: 1 }, { name: 'bob', value: 4 }, { name: 'michael', value: 0 }, { name: 'john', value: 3 }, { name: 'brad', value: null }, { name: 'martin', value: 2 }, { name: 'chris', value: null }];

items.sort(({ value: a }, { value: b }) => (a === null) - (b === null) || a - b);

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

0
投票

您可以评估使用 宿雾 并做一些类似的事情。

const items = [
  { name: 'eric', value: 1 },
  { name: 'bob', value: 4 },
  { name: 'michael', value: 0 },
  { name: 'john', value: 3 },
  { name: 'brad', value: null },
  { name: 'martin', value: 2 },
  { name: 'chris', value: null }
];

const orderedItems = lodash.orderBy(items, 'value');

我希望这能帮助你。

© www.soinside.com 2019 - 2024. All rights reserved.