如何在javascript中嵌入d3.nested数据 - 嵌套函数

时间:2015-03-09 19:48:23

标签: javascript function d3.js

我正在尝试过滤以通过嵌套数据获取值 所以,如果我的意见是...... enter image description here

目前我使用下面的代码从 b 中获取 b 每个名称(christine,smiths,aaron)。 但是我想为每个名字(christine,hannah,jeannie)获得 b a = 2 的价值

  var names = d3.nest()
      .key(function(d) { return d.name; })
      .entries(data);

   names.forEach(function(n) {
    n.maxAValue = d3.max(n.values, function(d) { return d.b; });
                             });

以上工作正常,但是我试图通过以下内容获得= = 2的值。有没有办法在javascript中做这样的事情?

names.forEach(function(n) { n.values, 
       function(d) { if(d.a == 2) { return d.b; }  }
                          });

======编辑==

data = [
  {
    "name":"apple",
    "a":1,
    "b":"jame"
  },
  {
    "name":"apple",
    "a":2,
    "b":"christine"
  },
  {
    "name":"orange",
    "a":1,
    "b":"nick"
  },
  {
    "name":"orange",
    "a":2,
    "b":"hannah"
  },
  {
    "name":"orange",
    "a":3,
    "b":"smiths"
  },
  {
    "name":"peach ",
    "a":1,
    "b":"boo"
  },
  {
    "name":"peach ",
    "a":2,
    "b":"jeannie"
  },
  {
    "name":"peach ",
    "a":3,
    "b":"aaron"
  }
]

1 个答案:

答案 0 :(得分:3)

您可以使用内置的array.filter函数:

var filtered = data.filter(function(d) {
   return d.a == 2; 
});

这是一个JSFiddle,它演示了这个,然后使用d3将过滤后的数据绑定到HTML ul:

http://jsfiddle.net/bywdq375/1/