根据其他数据向Json添加项目

时间:2018-04-18 19:06:45

标签: javascript json d3.js

我有一些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/

1 个答案:

答案 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"
    }
  }
})