Javascript 在D3.js中添加带有嵌套项的属性
我已经将d3.nest()用于按行分组的值 代码是这样的Javascript 在D3.js中添加带有嵌套项的属性,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我已经将d3.nest()用于按行分组的值 代码是这样的 function createNestingFunction(propertyName){ return function(d){ return d[propertyName]; }; } var levels = ['first', 'second', 'third'] var nest = d3.nest(); for (var i = 0; i < levels.length; i++) {
function createNestingFunction(propertyName){
return function(d){
return d[propertyName];
};
}
var levels = ['first', 'second', 'third']
var nest = d3.nest();
for (var i = 0; i < levels.length; i++) {
nest = nest.key( createNestingFunction(levels[i]) );
}
var root = {
"key":"root",
"values": nest.entries(data) //compute the nest
}
[
{
"key":"12345646", <=== this group by first key locationID
"keyArrt":"locationID",
"values": [
{
"key":"asdbnnmb12", <==== this group by second key userId
"keyArrt":"userId",
"values":[]
}
]
}...
函数createNestingFunction(propertyName){
返回函数(d){
返回d[propertyName];
};
}
变量级别=[‘第一’、‘第二’、‘第三’]
var nest=d3.nest();
对于(变量i=0;i
所以,如果有两个键['locationId','userID',结果将是这样的
[
{
"key":"12345646", <=== this group by first key locationID
"values": [
{
"key":"asdbnnmb12", <==== this group by second key userId
"values":[]
}
]
},
{
"key":"12345we6", <=== this group by first key locationId
"values": [
{
"key":"hjhggg33", <==== this group by second key userId
"values":[]
}
]
}
[
{
“key”:“12345646”,因为条目(数据)
返回一个数组,您可以使用连续的映射方法添加key属性
.map(function(d){
var j = 0;
d.keyAttr = levels[j];
d.values.map(function(e){
e.keyAttr = levels[++j];
return e;
});
return d;
});
这说明了如何处理玩具数据。我不确定您是否以正确的方式解决了这个问题。我很难解析您的初始数据结构和所需的最终数据结构。您能将它们放入plunker吗?我有一个更新问题,我可以构建plunker或fiddle,但可以在js中进行更改这就是为什么我没有启动它。不,如果我有3个级别的键,那么我必须映射那么多级别,再加上如果group by中的一些没有数据,那么会发生什么?对于第三个级别,第三个映射函数,如e.values.map(function(f){})
重复该模式