Javascript字母排序;如何将数值作为数字进行比较,同时将其与字符串进行比较?
我有一个在图表中显示的数据列表,我希望数据按字母顺序显示。当数据点都是单词(例如“白色”、“亚洲”、“非裔美国人”)时,我的排序功能工作正常,但当我的数据点包括数字(例如“1”、“10”时,“我意识到这些值是作为字符串而不是数字进行比较的,在Javascript中,“123”位于“2”之前,与“abc”位于“b”之前的方式相同“。我无法将整个数组转换为数字,因为它包含”我意识到这些值是作为字符串而不是数字进行比较的,在Javascript中,“123”位于“2”之前,就像“abc”位于“b”之前一样。我无法将整个数组转换为数字,因为它包含”您可以按数字排序,如果有比较符号,则取两个偏移量的增量作为相同的数值,这反映了比较的顺序Javascript字母排序;如何将数值作为数字进行比较,同时将其与字符串进行比较?,javascript,jquery,string,sorting,string-comparison,Javascript,Jquery,String,Sorting,String Comparison,我有一个在图表中显示的数据列表,我希望数据按字母顺序显示。当数据点都是单词(例如“白色”、“亚洲”、“非裔美国人”)时,我的排序功能工作正常,但当我的数据点包括数字(例如“1”、“10”时,“我意识到这些值是作为字符串而不是数字进行比较的,在Javascript中,“123”位于“2”之前,与“abc”位于“b”之前的方式相同“。我无法将整个数组转换为数字,因为它包含”我意识到这些值是作为字符串而不是数字进行比较的,在Javascript中,“123”位于“2”之前,就像“abc”位于“b”之前
为了获得正确的测试顺序,我建议将其替换为
,您可以按数字排序,如果有比较符号可用,则取两个偏移量的增量作为相同的数值,这反映了比较顺序
为了获得测试的正确顺序,
“及以下”,我建议将其替换为“您是在对字符串排序,而不是数字可能重复对事物数组排序,而不是对象数组,但听起来好像您是在要求字母数字排序实现。您是在对字符串排序,不是吗t numbers可能重复的可能重复对事物数组进行排序,而不是对对象数组进行排序,但听起来您要求的是字母数字排序实现。我不太确定它是否会产生预期的结果,或者我误解了这个问题。例如,您希望如何使用字符串4
ted,或者这是您不关心的情况?您是否运行了代码?(它没有给出正确的输出)我不确定它是否会产生预期的结果,或者我误解了这个问题。例如,您希望字符串4
如何排序,或者这是您不关心的情况?您是否运行了代码?(它没有给出正确的输出)
var series = response.series;
series = series.sort(function(a, b) {
var textA = a.name.toLowerCase();
var textB = b.name.toLowerCase();
console.log("Comparing " + textA + " to " + textB);
var returnVal = (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
console.log(returnVal);
return returnVal;
});
series = [
{name: "1"}
{name: "10"}
{name: "11"}
{name: "12"}
{name: "13"}
{name: "2"}
{name: "3"}
{name: "4"}
{name: "5"}
{name: "6"}
{name: "7"}
{name: "8"}
{name: "9"}
{name: "<1"}
{name: "Total 18 and below"}
]
series = series.sort(function(a, b) {
var textA = a.name.toLowerCase();
var textB = b.name.toLowerCase();
// if we're comparing number to number, do number sorting
if (!isNaN(textA) && !isNaN(textB)) {
var numA = parseInt(textA);
var numB = parseInt(textB);
return (numA < numB) ? -1 : (numA > numB) ? 1 : 0;
}
// else sort as strings
return (textA < textB) ? -1 : (textA > textB) ? 1 : 0;
});