250-6ren">
gpt4 book ai didi

javascript - 如何在 JavaScript 中对使用逗号分隔的数字 _and_ 符号的字符串数组进行最佳排序

转载 作者:行者123 更新时间:2023-11-28 14:46:11 24 4
gpt4 key购买 nike

在 JavaScript 中对包含逗号分隔数字 符号的字符串数组进行 sort() 的最佳方法是什么?

我的数组如下所示:

var uniqueValues = ["<100,000", ">100,000", ">250,000", ">500,000", ">1,000,000", ">750,000"]

我需要它看起来像这样:

[">1,000,000", ">750,000", ">500,000", ">250,000", ">100,000", "<100,000"]

下面您可以看到我迄今为止所尝试过的内容。 #1 解决字母数字问题(使用排序和 localeCompare 的组合),#2 尝试将“>”权重高于“<”(感谢这个 SO answer ,但我不知道如何既可以衡量符号的权重,也可以正确地对逗号分隔的数字进行排序。以下是我尝试过但没有成功的方法:

1.   uniqueValues.sort((a,b) => a.localeCompare(b));

2. var sortOrder = {
'>': 1,
'<': 2
}

uniqueValues.sort(function (a, b) {
var oa = sortOrder[a[0]] || 2;
var ob = sortOrder[b[0]] || 2;
if (oa > ob)
return 1;
else if (oa < ob)
return -1;
else
return 0;
});

最佳答案

一种稍微不同的方法是使用解析方法,因为您并不完全希望根据字符串值进行排序。您宁愿根据它们所代表的数量级进行排序。

假设每个表达式应该被解释为更大的数字('>')或更小的数字('<')。这可以翻译为+1/-1。然后,替换剩余部分中的所有点和逗号,使其成为整数,并将两部分相加。

解决方案可以像根据解析方法进行排序一样简单。

var uniqueValues = ["<100,000", ">100,000", ">250,000", ">500,000", ">1,000,000", ">750,000"];

function parseExpr(exp) {
return (exp[0] == '<' ? -1 : 1) + parseInt(exp.replace(/[,.]/g, '').substr(1));
}

uniqueValues.sort((a,b) => parseExpr(b) - parseExpr(a));

console.log(uniqueValues);

关于javascript - 如何在 JavaScript 中对使用逗号分隔的数字 _and_ 符号的字符串数组进行最佳排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46310431/

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