我知道答案并没有在这个答案上缺失,但请耐心等待,我尝试了许多解决方案,但仍无法使用JavaScript按4th值对二维数组进行排序。

列表如下所示(数组可能包含无限数量的列表):

colors = [[247, 247, 247, 429, 1], [132, 128, 132, 2, 1], [37, 29, 37, 649, 1]]


输出应为:

colors = [[37, 29, 37, 649, 1], [247, 247, 247, 429, 1], [132, 128, 132, 2, 1]]


这是我尝试过的:

colors.sort(function(a,b){
    alert(a[3] - b[3]);
});


上面的代码返回NaN,我不确定为什么...



如果它可以帮助我尝试实现的python等效项,将是:

sorted_colors = sorted(colors(u), key=lambda x: -x[3])

最佳答案

Array#sort回调需要返回一个数字。您不返回减法结果,而只是显示警告。删除alert(),然后返回b[3] - a[3]以获取所需的顺序。



var colors = [[247, 247, 247, 429, 1], [132, 128, 132, 2, 1], [37, 29, 37, 649, 1]];

colors.sort(function(a,b){
    return b[3] - a[3];
});

console.log(colors);

07-21 22:27