gpt4 book ai didi

javascript - 根据值重新排序数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:55 26 4
gpt4 key购买 nike

我有一个包含类的数组(该类称为Note),这些类中有基本值。两个重要的值是 Note.Pinned ( bool 值,无论是否固定)和 Note.Modified (上次编辑时的时间戳)。

我想按Modified 时间戳对这个类数组进行排序,然后重新排序,使Pinned 注释位于此列表的顶部。

我已经尝试过对笔记进行排序。

const SortedNotes = Notes.sort((a, b) => a.Modified > b.Modified);

Notes 是带有类的数组。

但是,有没有更好的方法来重新排列这个数组呢?或者这是我可以使用的唯一方法?

SortedNotes.filter(n => n.Pinned).concat(SortedNotes.filter(n => !n.Pinned));

上面的方法可行,而且我知道我可以使用Array.prototype.partition,那么还有其他方法可以做到这一点吗?

谢谢

最佳答案

也许不是最好的解决方案,但这应该可以帮助您朝着正确的方向前进。这会对数组进行排序,以便笔记按日期降序排列,固定的笔记位于顶部。

与其他(更好的)答案不同,它的排序复杂度为 O(2n),因此请记住这一点。

const notes = [
{
text: "foo",
modified: 1583337610387,
pinned: false
},
{
text: "bar",
modified: 1583337610388,
pinned: true
},
{
text: "baz",
modified: 1583337610389,
pinned: false
},
{
text: "qux",
modified: 1583337610390,
pinned: true
}
];

const sortedNotes = [...notes];
sortedNotes.sort((a, b) => a.modified > b.modified ? -1 : 1);
sortedNotes.sort((a, b) => (a.pinned === b.pinned) ? 0 : a.pinned ? -1 : 1);
console.log(sortedNotes);

关于javascript - 根据值重新排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60529956/

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