2013-11-26 69 views
1

我有阵列(对象)与ID/nume的阿雷:滤波对象的数组

Object { Biosecuritate=[Object {id=1,nume="bio"}, 
Object {id=5,nume="securitate"}], Deseuri=[Object {id=2,nume="des"}] , 
Reglementari=[Object {id=3,nume="Reglementari"}], 
Sol/Subsol=[Object {id=4,nume="Sol/Subsol"}] } 

    var filtered = _.filter(domenii, function(item) { 
      return (item[0].nume == "Reglementari" || item[0].nume == "Sol/Subsol") 
    }); 
    console.log("filtered=",filtered); 
    console.log("domenii=",domenii); 

和我想要“提取物”从“矩阵”只有2个对象,但我做后过滤 就变成:

[ [Object {id=3,nume="Reglementari"}], [Object {id=4,nume="Sol/Subsol"}] ] 

我如何转换“过滤”初始类型,或过滤,如果没有改变它的“形式”?

+0

哇@benjaminbenben,做**不**尝试编辑别人的代码那样。您完全无效了编辑的好处。 – meagar

+0

“数组(对象)数组” - 它实际上是一个对象,其中包含对象数组的值 – benjaminbenben

+0

@meagar - 它是从某种检查器中粘贴的。我只是更改了格式,以便您可以使用它 – benjaminbenben

回答

0

要保持对象,你可以减少,而不是过滤器:

var domenii = { 
    Biosecuritate: [{id:1,nume:"bio"}, {id:5,nume:"securitate"}], 
    Deseuri: [{id:2,nume:"des"}] , 
    Reglementari: [{id:3,nume:"Reglementari"}], 
    "Sol/Subsol": [{id:4,nume:"Sol/Subsol"}] 
} 

var reduced = _.reduce(domenii, function(memo, item, key){ 
    if(item[0].nume == "Reglementari" || item[0].nume == "Sol/Subsol"){ 
    memo[key] = item; 
    } 
    return memo 
}, {}) 

console.log("reduced=",reduced); 
console.log("domenii=",domenii); 
+0

非常感谢快速(和良好)的答案! – WDrgn

+0

(我不能为你的答案投票 - 因为我没有15个代表点而投票) – WDrgn

+0

@MihaiGodeanu获得代表的简单方法是通过点击你最喜欢的答案旁边的绿色复选标记来接受人们给你的答案 –

0

domenii的类型更改为平面阵列可能会更好,但您也可以将结果平坦化。这添加到末尾:filtered = _.flatten(filtered);

+0

谢谢!它的作品 - _.flatten和_.reduce! – WDrgn