我已使用 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++) {
nest = nest.key( createNestingFunction(levels[i]) );
}
var root = {
"key":"root",
"values": nest.entries(data) //compute the nest
}
所以如果有两个键 ['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", <=== this group by first key locationID
"keyArrt":"locationID",
"values": [
{
"key":"asdbnnmb12", <==== this group by second key userId
"keyArrt":"userId",
"values":[]
}
]
}...
]
所以我可以按级别识别分组,因为我必须根据分组级别重定向页面,并且为此我添加了识别当前级别。
我如何添加此键或任何其他具有键和值的属性,以便在分组级别上我可以识别它们
More: example想象一下您有社交网络数据,并且您想要构建层次结构,例如第一级是位置,然后是用户,然后是他们的相关帖子(实际上是真实的行数据)
因此,您将为每个级别位置和用户添加两个键..它会很好地工作,但是在获取数据后,您在递归或简单循环中的某处使用此数据,您将如何识别当前节点是用户级别 goupr by 或位置它只会具有实际上是值而不是 attr 的键,键像位置说美国,法国比该级别将显示键为美国和法国,因此在用户级别上相同的键组将是用户名,如 AMIT 或任何其他名称..所以基于在键上,我们无法决定这是哪个分组..所以我想要的是,如果键是位置值,那么我想要的不仅仅是添加一个像键属性这样的属性,并且我们只在其中显示“位置”,这样之后我们就可以识别出这个对象具有基于位置或用户分组的值。