gpt4 book ai didi

javascript - 如何对包含分层分隔符的字符串进行排序,优先考虑根级别的字符串

转载 作者:行者123 更新时间:2023-11-28 07:57:47 25 4
gpt4 key购买 nike

我有一个表示层次结构的字符串列表,其中层次结构的每个级别均由 | 分隔。这是我的数组的示例:

[
"fruit",
"vegetable|lettuce",
"vegetable|carrot",
"fruit|apple|fuji",
"vegetable",
"fruit|apple",
"fruit|apple|gala",
...
]

我想要进行有效的排序,以便我的输出是一个数组,其中根级别的字符串位于第二级别的字符串之前,而那些位于第三级别的字符串之前,等等。这是我想要的上面的例子的结果是:

[
"fruit",
"vegetable",
"fruit|apple",
"vegetable|carrot",
"vegetable|lettuce",
"fruit|apple|fuji",
"fruit|apple|gala",
...
]

我正在尝试使用 JavaScript 或 AngularJS 尽可能高效地进行排序(因为我有一个很大的列表要排序)。这是我到目前为止所拥有的......但是有没有更有效的方法来做到这一点?预先感谢您的建议。

function (a, b) {
var aLevels = a.match(/|/g).length;
var bLevels = b.match(/|/g).length;

if (aLevels == bLevels) {
return a > b ? 1 : (a < b ? -1 : 0);
} else {
return aLevels > bLevels ? 1 : -1;
}
}

最佳答案

我不确定暂时发布在这里的答案发生了什么,但幸运的是,我在回答者删除它之前看到了它(并且我关闭了该浏览器选项卡)......

Fiddle ,提出以下建议:

function(a,b) {
a = a.split('|').length + a;
b = b.split('|').length + b;

return a > b ? 1 : -1
}

此解决方案的唯一问题是级别数量有限制,但我认为这不会成为我的数据集的问题。

我写了一个粗略的performance test这表明这种方法优于我最初的尝试。

(注意:我在最初的问题中没有指出该字符串也总是用 | 分隔符来假装,但我确实将其包含在我的性能测试中。所以我还使用 长度-1)

感谢神秘回答者,无论你是谁。

最终,我现在的解决方案(以及不区分大小写)是:

foods.sort(function(a, b) {
a = (a.split('|').length - 1) + a;
b = (b.split('|').length - 1) + b;
return a.localeCompare(b, 'en', {'sensitivity': 'base'});
});

我愿意听到任何更快、更有效的解决方案:)

关于javascript - 如何对包含分层分隔符的字符串进行排序,优先考虑根级别的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25851313/

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