gpt4 book ai didi

javascript - 在 Javascript 中排序列表

转载 作者:行者123 更新时间:2023-11-30 09:52:53 25 4
gpt4 key购买 nike

我有一个列表,其成员是嵌套的整数列表,例如:

[ [1,2], [], [1,2,3], [ [1,2],3], [1,2,4], [ [], [1,2] ], [34,5,6], [-1,66] ]

我想对这个列表进行排序,使用(世界上所有其他语言)会考虑嵌套列表的标准排序。例如:

[] < [ [1] ] < [ [1,2] ] < [ [2] ] < [ [11] ]

l.sort() 搞砸了,因为它将列表变成了字符串

有没有一种简单的方法,可以在 javascript(或像 lodash 这样的公共(public)库)中获得适当类型的嵌套列表?

最佳答案

这是一个由两个相互递归函数组成的系统,第一个将数组与非数组进行比较,将数字与数字进行比较,第二个将数组逐元素进行比较。

function cmp(x, y) {
let ax = Array.isArray(x),
ay = Array.isArray(y);
return ax - ay || (ax ? cmpArr(x, y) : x - y);
}

function cmpArr(x, y) {
let xlen = x.length,
ylen = y.length,
min = xlen < ylen ? xlen : ylen,
c;

for (let i = 0; i < min; i++) {
if (c = cmp(x[i], y[i]))
return c;
}

return xlen - ylen;
}

//

a = [[1, 2], [], [1, 2, 3], [[1, 2], 3], [1, 2, 4], [[], [1, 2]], [34, 5, 6], [-1, 66]];
a.sort(cmp);
console.log(JSON.stringify(a))

关于javascript - 在 Javascript 中排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35441435/

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