我有一些JSON数据,需要为我正在做的D3堆叠条形图进行重新组织。本质上,我在JSON对象中有一个ename和total字段。我需要在我的所有JSON中获取每个唯一的名称,并为每个对象设置一个字段,其中每个对象的名称为该节点的唯一名称,而该名称的总数为该名称,并将该节点的键/值对设置为所有其他唯一名称为0。
因此,当前节点的外观如下所示
{"id":"1", "month":"1", "total":"10", "year":"2012", "ename":"Jamie"}
在我重新整理它之后,它看起来会像这样
{"id":"1", "month":"1", "total":"10", "year":"2012", "ename":"Jamie", "Jamie":"10", "Joe": "0", "Jeri":"0", "Ann":"0", "Ron":"0","Tim":"0"}
我试图根据每一个出现在特定日期的人来堆叠我的酒吧。
我有一些通过JSON获得唯一名称的代码。
data.forEach(function(element, i){
getNames(data);
})
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}
var uniq_enames = enames.filter( onlyUnique );
***This is where I am trying to add to my d****
data.forEach(function(d) {
d.Date = new Date(d.year, d.month - 1);
for(i=0; i < uniq_enames.length; i++){
if(d.ename == uniq_enames[i]){
var name = uniq_enames[i]
}
}
})
我被困的地方是如何添加名称变量作为我的值与d.total一起使用的键?此外(我假设有第二个内环),那么如何在of语句上对其他"name“键执行相同的操作,将它们设置为0?
我的原始小提琴为堆栈设置了三个类别的键,我试图将我的键设置为所有唯一的名称(这里的数据是手工完成的,当我完成这项工作时,它将来自一个可能是任意数量的唯一名称的服务)。
原始Fiddle - https://jsfiddle.net/jamiebrs/cuhqy8yj/
我正试着按名字堆叠- https://jsfiddle.net/jamiebrs/6guh43yn/
发布于 2018-04-18 11:30:26
我刚发完这篇文章,我就想出了自己想要做的事。
下面是我如何添加到循环中。
data.forEach(function(d) {
d.Date = new Date(d.year, d.month - 1);
for(i=0; i < uniq_enames.length; i++){
if(d.ename == uniq_enames[i]){
var name = uniq_enames[i]
d[name] = d.total
} else{
var name = uniq_enames[i]
d[name] = "0"
}
}
})
https://stackoverflow.com/questions/49907267
复制相似问题