8
data = [[1062, 732, 1327754], [12335, 7693, 109313934], [290, 450, 1768064]];

如何按数据中每个数组对象的第三个值进行排序,从而得到降序排序值

[[12335, 7693, 109313934], [290, 450, 1768064], [1062, 732, 1327754]]

我正在尝试使用 d3 方法: data.sort(d3.descending);

4

2 回答 2

19

您需要传递data.sort一个比较函数,该函数将访问每个数组中的第三个元素:

data.sort(function(a, b){ return d3.descending(a[2], b[2]); })

这里因为data是一个多维数组,两者都是a数组b。然后

d3.descending(a[2], b[2])

执行每个数组中的第三个元素的比较,以便按降序返回结果。

于 2013-10-17T00:53:27.050 回答
2

并且,如果要添加辅助排序,以便如果第三列值相等,则对第二列进行排序:

data.sort(function(a, b) {
  if(a[2]===b[2]) {
    return d3.descending(a[1], b[1]);
  }
  return d3.descending(a[2], b[2]);
};
于 2014-04-26T14:13:27.130 回答