Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript字母排序;如何将数值作为数字进行比较,同时将其与字符串进行比较?_Javascript_Jquery_String_Sorting_String Comparison - Fatal编程技术网

Javascript字母排序;如何将数值作为数字进行比较,同时将其与字符串进行比较?

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”之前

我有一个在图表中显示的数据列表,我希望数据按字母顺序显示。当数据点都是单词(例如“白色”、“亚洲”、“非裔美国人”)时,我的排序功能工作正常,但当我的数据点包括数字(例如“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;
});