【发布时间】:2018-04-18 19:06:45
【问题描述】:
我有一些 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 作为我的值的键?此外(我假设使用第二个内部循环)然后如何在我的 else 语句中对其他“名称”键执行相同的操作,将它们设置为总共 0?
我原来的小提琴为堆栈设置了 3 个类别的键,我试图将我的键设置为所有唯一名称(供参考,这里的数据是手工完成的,当我得到这个工作时它会来来自可以是任意数量的唯一名称的服务)
原始小提琴 - https://jsfiddle.net/jamiebrs/cuhqy8yj/
Fiddle 我正在尝试按名称堆叠 - https://jsfiddle.net/jamiebrs/6guh43yn/
【问题讨论】:
标签: javascript json d3.js