我有一些JSON数据,我需要重新组织我正在做的D3堆积条形图。基本上我在JSON对象中有一个ename和total字段。我需要在我的所有JSON中获取每个唯一的ename,并为每个对象创建一个字段,该字段获取该节点的唯一名称和该名称的总和,并使其成为键/值对并将所有其他唯一名称设置为该节点为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作为我的值的关键?进一步(我假设第二个内循环)然后我的else语句如何为另一个&#34; name&#34;做同样的事情。键将它们设置为总共0?
我的原始小提琴设置了堆栈的3个类别的键,我正在尝试将我的键设置为所有唯一的名称(供参考,这里的数据是手工完成的,当我得到这个工作时它会来来自可以是任意数量的唯一名称的服务)
原始小提琴 - https://jsfiddle.net/jamiebrs/cuhqy8yj/
小提琴我试图按名字堆叠 - https://jsfiddle.net/jamiebrs/6guh43yn/
答案 0 :(得分:0)
在我发布这篇文章之前,我发现了我想要做的事情。
以下是我添加循环的方法。
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"
}
}
})