D3.js 多维数组的D3排序降序

D3.js 多维数组的D3排序降序,d3.js,D3.js,如何按数据中每个数组对象的第三个值进行排序,从而得到 data = [[1062, 732, 1327754], [12335, 7693, 109313934], [290, 450, 1768064]]; 我尝试使用d3方法: data.sort(d3.降序)您需要传递数据。排序一个比较函数,该函数将访问每个数组中的第三个元素: [[12335, 7693, 109313934], [290, 450, 1768064], [1062, 732, 1327754]] 这里因为data是多

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

data = [[1062, 732, 1327754], [12335, 7693, 109313934], [290, 450, 1768064]];
我尝试使用d3方法:
data.sort(d3.降序)

您需要传递
数据。排序
一个比较函数,该函数将访问每个数组中的第三个元素:

[[12335, 7693, 109313934], [290, 450, 1768064], [1062, 732, 1327754]]
这里因为
data
是多维数组,所以
a
b
也将是数组。然后

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

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

如果要添加二次排序,则如果第三列值相等,则在第二列上排序:

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

因为您使用的是数字,所以只使用
函数(a,b){return b[2]-a[2];}
而不是
d3返回的函数可能更有意义。虽然使用d3是一个非常好的解决方案,也可以说是更可读的解决方案。这一点@Wex很好。我使用了
d3.descending
,因为OP明确要求它,而且可以说它更清晰:)
data.sort(function(a, b) {
  if(a[2]===b[2]) {
    return d3.descending(a[1], b[1]);
  }
  return d3.descending(a[2], b[2]);
};