我正在尝试过滤以通过嵌套数据获取值
所以,如果我的意见是......
目前我使用下面的代码从 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"
}
]
答案 0 :(得分:3)
您可以使用内置的array.filter函数:
var filtered = data.filter(function(d) {
return d.a == 2;
});
这是一个JSFiddle,它演示了这个,然后使用d3将过滤后的数据绑定到HTML ul: