在Javascript中从数组中提取对象

在Javascript中从数组中提取对象,javascript,d3.js,Javascript,D3.js,我正在使用一个名为“dataset”的数组处理D3.JS图表,其中每个条目都是一个具有键和值属性的对象,例如: dataset= [ {"key":"alpha", "value": [ {}, { } ...]}, {"key":"beta", "value": [ { }, { } ...]}, {"key":"gamma", "value": [ {}, { } ...]}, {"key":"delta", "value": [ { }, { } ...]} ]; filt

我正在使用一个名为“dataset”的数组处理D3.JS图表,其中每个条目都是一个具有键和值属性的对象,例如:

dataset= 
 [
 {"key":"alpha", "value": [ {}, { } ...]},
 {"key":"beta", "value": [ { }, { } ...]},
 {"key":"gamma", "value": [ {}, { } ...]},
 {"key":"delta", "value": [ { }, { } ...]}
 ];
filteredDataset = dataset.filter(function(d){ console.log("d",d); if(d.key === "gamma") return d});
我需要提取其中一个对象来创建一个新数组。我尝试了以下方法:

dataset= 
 [
 {"key":"alpha", "value": [ {}, { } ...]},
 {"key":"beta", "value": [ { }, { } ...]},
 {"key":"gamma", "value": [ {}, { } ...]},
 {"key":"delta", "value": [ { }, { } ...]}
 ];
filteredDataset = dataset.filter(function(d){ console.log("d",d); if(d.key === "gamma") return d});

我可以在控制台中看到,我正在访问数据集中的每个对象,但生成的filteredDataset是空的。我做错了什么?

为了清楚起见,应该通过返回一个
布尔值来使用
过滤器

比如:

filteredDataset = dataset.filter(function(d){ return d.key === "gamma"})
在我这方面,代码

var dataset = [
     {"key":"alpha", "value": [ {}, { }]},
     {"key":"beta", "value": [ { }, { }]},
     {"key":"gamma", "value": [ {}, { }]},
     {"key":"delta", "value": [ { }, { }]}
]; 
filteredDataset = dataset.filter(function(d){ return d.key === "gamma"})
产出:

[ { key: 'gamma', value: [ {}, {} ] } ]
因此,请仔细检查您的代码

dataset.filter(函数(d){returnd.key=='gamma';})
这将返回key==gamma的数据


我得到
[{key:'gamma',value:[{},{}]}]
您的代码是正确的。Matyas和@thefoureye:出于某种原因,我的代码给了我一个空数组作为过滤数据集的结果。我做了Matyas建议的改变,效果很好!!!谢谢,你知道为什么代码一开始对我不起作用吗?对不起,我不知道为什么另一种方法不起作用。因为本质上,您可以返回任何计算结果为true的对象,所以您的代码也应该是有效的