有了这个数组:JS multidimentionnal数组排序列表
var arr = [];
arr[0] = [1, 'Peter', 3];
arr[1] = [1, 'Mary', 2];
arr[2] = [0, 'David', 5];
arr[3] = [0, 'John', 4];
arr[4] = [0, 'Billy', 1];
这工作得很好:
arr.sort(function (a,b) {
console.log(a[2]);
if (a[2] > b[2]) return 1;
if (a[2] < b[2]) return -1;
return 0;
});
但是像这样的数组:
var arr = [];
arr[0] = [1, 1, 0, 0, 0];
arr[1] = ['Peter', 'Mary', 'David', 'John', 'Billy'];
arr[2] = [3, 2, 5, 4, 1];
A [2]获取0 -大卫。
我返回了一切,我真的搞不清楚。 请问,你知道我可以按照arr [2]列表排序第二个数组吗?
你可能会更好过映射第一个,并在排序后将其转换回第二个。 – epascarello
有一点需要注意的是,在第一种情况下,您正在对数组“arr”进行排序,而在第二种情况下,您正在对子数组的排序进行排序,所以'arr.sort'永远不会做到这一点,因为您并不试图排序'arr'。正如@epascarello所说,你会更好地将一个映射到另一个。 –
所以,如果我正确地理解了这个问题,你正在尝试根据array3的值对array1和array2进行排序。这并不是简单的实现,如果你不想这样做,我想你会尝试做一些更容易的事情。 我可以建议你转置你的矩阵,将它与第一个实现进行排序,然后将其转置回来。或者你可以实现一个非常特殊的排序,但通过使用.sort(),这是不可能的。 – Alex