gpt4 book ai didi

javascript - 如何强制在 JavaScript 中将某些字符串排在最后?

转载 作者:行者123 更新时间:2023-12-02 17:17:32 24 4
gpt4 key购买 nike

我正在尝试按字母顺序对字符串数组进行排序,但某些字符串(例如 "NA""Wild" )除外,这些字符串应始终放在最后。排序优先级应为sorted_values_alphabetically < "NA" < "Wild" .

如果我们有以下数组:

["Wild", "sit", "ipsum", "dolor", "NA", "amet", "lorem"];

我希望将其排序为:

["amet", "dolor", "ipsum", "lorem", "sit", "NA", "Wild"];

我在想类似的事情

arr.sort(function(a,b) {
var aVal = a, bVal = b;

// Hack to make values < "NA" < "Wild"
if (aVal == "NA") aVal = "zzz" + aVal;
if (bVal == "NA") bVal = "zzz" + bVal;
if (aVal == "Wild") aVal = "zzzz" + aVal;
if (bVal == "Wild") bVal = "zzzz" + bVal;

return aVal.toLowerCase().localeCompare(bVal.toLowerCase());
});

但这可能不适用于所有 Unicode 字符。

我也对高性能算法感兴趣!

性能

仅供引用,T. J. Crowder 的算法性能稍高一些,通过 jsPerf 。尽管我更喜欢 Halcyon 更简洁的方法!

最佳答案

您可以向排序功能添加异常(exception)。通过一点聪明的数学,我得到了:

arr.sort(function(a,b) {
var exceptions = [ "NA", "Wild" ], indexA, indexB;
indexA = exceptions.indexOf(a);
indexB = exceptions.indexOf(b);
if (indexA === -1 && indexB === -1) {
return a.toLowerCase().localeCompare(b.toLowerCase()); // regular case
}
return indexA - indexB; // index will be -1 (doesn't occur), 0 or 1
});

关于javascript - 如何强制在 JavaScript 中将某些字符串排在最后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24290131/

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