gpt4 book ai didi

javascript - 在对象数组中将空值排序到最后

转载 作者:行者123 更新时间:2023-12-02 06:50:54 26 4
gpt4 key购买 nike

我有一个对象数组,如下所示:

c = [{a: null}, {a: 12}, {a: 1}, {a: 50}, {a: 2}, {a: null}]

我想先通过具有值的对象对它们进行排序,然后是具有空值的对象。

我尝试的是:
c.sort(function(b) { return b.a ? -1 : 1 })

输出
[{a: 2}, {a: 50}, {a: 1}, {a: 12}, {a: null}, {a: null}]

预期输出
[{a: 12}, {a: 1}, {a: 50}, {a: 2}, {a: null}, {a: null}]

我怎样才能做到这一点?

最佳答案

这会将空值和其他虚假值放在列表的末尾:

c = [{a: null}, {a: 12}, {a: 1}, {a: 50}, {a: 2}, {a: null}];
c.sort((x, y) => !!y.a - !!x.a);

console.log(c);


但是,由于您实际上并没有对任何内容进行排序,因此您可以将列表分成两部分并重新加入它们:

c = [{a: null}, {a: 12}, {a: 1}, {a: 50}, {a: 2}, {a: null}];

r = [
...c.filter(x => x.a !== null),
...c.filter(x => x.a === null)
]

console.log(r)


这也不依赖于 sort功能稳定。

关于javascript - 在对象数组中将空值排序到最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44802859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com