我知道答案并没有在这个答案上缺失,但请耐心等待,我尝试了许多解决方案,但仍无法使用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);