Arrays 使用d3js对数组进行排序
我有一个数组,数组中的每个元素(代表最高法院首席法官)都包含一个数据点数组(首席法官的姓名、争议数量和年份) 对于顶级数组中的每个元素,我需要按年份升序对低级数组进行排序 我尝试使用以下方法按升序对年份进行排序:Arrays 使用d3js对数组进行排序,arrays,sorting,d3.js,Arrays,Sorting,D3.js,我有一个数组,数组中的每个元素(代表最高法院首席法官)都包含一个数据点数组(首席法官的姓名、争议数量和年份) 对于顶级数组中的每个元素,我需要按年份升序对低级数组进行排序 我尝试使用以下方法按升序对年份进行排序: nested_data.forEach(function(d) { d.values.sort(d3.ascending(d.values.year)); }); 但它并没有按年份的升序对较低级别的数组进行排序 下面是嵌套数据的console.log,以显示其结构 A
nested_data.forEach(function(d) {
d.values.sort(d3.ascending(d.values.year));
});
但它并没有按年份的升序对较低级别的数组进行排序
下面是嵌套数据的console.log
,以显示其结构
Array[5]
0:Object
key:"Vinson"
values:Array[7]
0:Object
chief:"Vinson"
disputes:142
year:Tue Jan 01 1946 00:00:00 GMT+0800 (CST)
1:Object
2:Object
3:Object
4:Object
5:Object
6:Object
1:Object
key:"Warren"
values:Array[16]
2:Object
key:"Burger"
values:Array[17]
3:Object
key:"Rehnquist"
values:Array[19]
4:Object
key:"Roberts"
values:Array[11]
如何按年份升序排列下层数组?这是函数:
nested_data.forEach(function(d) {
d.values.sort(function(a, b) {
return d3.ascending(+a.year, +b.year)
});
});
您原来的函数有两个问题:
值
数组进行排序,因此不需要在比较功能中重复值
compareFunction
使用两个参数,通常命名为a
和b
。您必须将d3.升序
放入compareFunction
中。看一看var数据=[{
键:“foo”,
价值观:[{
酋长:“鲍勃”,
年份:1982年
}, {
酋长:“汤姆”,
年份:1977年
}, {
酋长:“卡拉”,
年份:2010年
}, {
酋长:“安娜”,
年份:1999年
}]
}, {
键:“酒吧”,
价值观:[{
局长:“条例草案”,
年份:2009年
}, {
酋长:“特德”,
年份:2014年
}]
}, {
键:“baz”,
价值观:[{
酋长:“弗雷德”,
年份:1998年
}, {
酋长:“苏”,
年份:1992年
}, {
酋长:“查理”,
年份:1999年
}, {
酋长:“爱丽丝”,
年份:1979年
}]
}, ];
data.forEach(函数(d){
d、 值。排序(函数(a,b){
回报率d3.上升(+a.年,+b.年)
});
});
控制台日志(数据)代码>