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]);
};