gpt4 book ai didi

Javascript:首先按第二列desc排序二维数组,然后按第一列asc排序

转载 作者:搜寻专家 更新时间:2023-11-01 04:57:32 26 4
gpt4 key购买 nike

我有一个名为 myarr 的二维数组,它有十几行和两列。其内容如下:

myarr[0][0]='John'
myarr[0][1]=48
myarr[1][0]='Ann'
myarr[1][1]=36
myarr[2][0]='Sean'
myarr[2][1]=18
...

我想先按第二列降序排序,然后按第一列升序排序,如下所示:

John 48
Ann 36
Bob 36
Carl 36
Sean 18
Dean 17 ..

通过使用 JavaScript,我尝试了这样的事情:

myarr.sort(function(a, b){
a = a[1]+a[0];
b = b[1]+b[0];
return a == b ? 0 : (a > b ? 1 : -1)
})

但这种方式按第 2 列升序 (0 - 85) 排序,然后按第 1 列升序 (A - Z) 排序。我哪里出错了?谢谢。

最佳答案

更新/注意:这是一个非常适合您的情况的紧凑排序函数,它还支持具有非 ASCII 字符的字符串。我认为这是对我的回答的“改进”,只是代价是不太容易理解,除了知道发生了什么的人之外:

myarr.sort(
function(a,b) {
return b[1]-a[1] || a[0].localeCompare(b[0]);
}
);

原始建议答案:此代码将采用您提供的数据(随机化)并生成按您需要排序的输出。

myarr = [
['Dean', 17],
['John', 48],
['Ann', 36],
['Sean', 18],
['Bob', 36],
['Carl', 36]
];

myarr.sort(
function(a,b) {
if (a[1] == b[1])
return a[0] < b[0] ? -1 : 1;
return a[1] < b[1] ? 1 : -1;
}
);

alert(myarr);

关于Javascript:首先按第二列desc排序二维数组,然后按第一列asc排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17455780/

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