JavaScript中如何对多维数组进行排序

3
我需要对包含数组的数组进行升序排序。数据结构看起来像这样:
array = [[escalation],//integer
         [name],
         [email],
         [blackberry]];

我尝试使用以下函数对数组进行排序(按升序排序):
function sortfcn(a,b){
 if(a[0]<b[0]){
    return -1;
 }
 else if(a[0]>b[0]){
    return 1;
 }
 else{
    return 0;
 }
}

但是我的输出仍然看起来不正确...
0 0 10 12 14 16 18 20 20 8
有什么建议可以修复这个问题吗?

1
escalation 是什么数据类型? - Gumbo
它应该是一个整型变量,但看起来它被读取为一个字符串。这很合理,因为我从XML中获取的是"text()"。 - Mark Cheek
1个回答

1
从您提供的排序输出来看,JavaScript似乎将数组元素读取为字符串。请尝试使用parseInt函数:
function sortfcn(a,b){
 if(parseInt(a[0])<parseInt(b[0])){
    return -1;
 }
 else if(parseInt(a[0])>parseInt(b[0])){
    return 1;
 }
 else{
    return 0;
 }
}

你可能也想在parseInt中添加基数参数:parseInt(a[0], 10) - 这将强制它作为十进制解析。 - Ryan Kinal
1
搞定了!谢谢!!一旦允许我,我会将其标记为答案。 - Mark Cheek
1
一元运算符+在这里也很方便。例如,if (+a[0] < +b[0])。据我看来比parseInt更整洁,而且没有进制问题。https://dev59.com/AnVD5IYBdhLWcg3wL4cA#2243631 - Andy E

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接