【发布时间】:2017-09-21 05:16:51
【问题描述】:
有了这个数组:
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-David。
我把所有东西都退回了,我真的想不通。 请问,你知道如何根据 arr[2] 列表对第二个数组进行排序吗?
【问题讨论】:
-
您最好将其映射到第一个,而不是在排序后将其转换回第二个。
-
要记住的一点是,在第一种情况下,您正在对数组
arr进行排序,而在第二种情况下,您正在对子数组的混搭进行排序,因此arr.sort永远不会成功因为您没有尝试对arr进行排序。正如@epascarello 所说,您最好将一个映射到另一个。 -
所以,如果我正确理解了这个问题,您将尝试根据 array3 的值对 array1 和 array2 进行排序。这不是简单的实现,我想如果你不想这样做的话,你正在尝试做一些更容易的事情。我可以建议您转置矩阵,使用第一个实现对其进行排序,然后将其转回。或者你可以实现一个非常特殊的排序,但是使用 .sort() 是不可能的。
-
谢谢您的建议。我已经在基地分配了桌子。看到这样一个充满活力和自愿的社区真是令人着迷。谢谢大家!
标签: javascript arrays sorting multidimensional-array