gpt4 book ai didi

javascript - 对数组进行排序而不改变顺序

转载 作者:行者123 更新时间:2023-11-28 08:40:34 25 4
gpt4 key购买 nike

我正在尝试在 JS 中找到一种方法来对数组进行排序,而无需实际更改元素的顺序,但更像是“分组”功能。

示例数据:

[
{group: 'test', title: 'A'},
{group: 'test', title: 'B'},
{group: 'test2', title: 'C'},
{group: 'test', title: 'D'}
]

我的想法是按照我的最终订单的方式执行[].sort():

[
{group: 'test', title: 'A'},
{group: 'test', title: 'B'},
{group: 'test', title: 'D'},
{group: 'test2', title: 'C'}
]

意思是:我没有改变前两项的顺序,只是因为他们的组而交换了#3和#4。如果我使用经典的 localeCompare,我最终会根据组的值来恢复它们,这不是我想要的,应该保留它们的顺序。

编辑:考虑到答案,我想再次澄清,我不想想要更改组的顺序,这意味着它们不应该按字母顺序排序,但是相反,它们应该按出现的顺序进行分组。

最佳答案

您需要为 Array.sort 提供自定义比较函数

var a = [
{group: 'test', title: 'A'},
{group: 'test', title: 'B'},
{group: 'test2', title: 'C'},
{group: 'test', title: 'D'}
];

function myComparisonFunction(a1, b1) {
return a1.group < b1.group ? -1 : a1.group === b1.group ? 0 : 1;
}

a.sort(myComparisonFunction);

console.log(a);

关于javascript - 对数组进行排序而不改变顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20540812/

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