2015-11-01 45 views
1

我在对象的嵌套地狱,这里内。我觉得这有一个答案,我只是无法弄清楚如何说出发生的事情。由对象属性过滤的对象内的对象的阵列中的阵列

所以,我得到的对象从静止回报这个巨型阵列(类似450+对象)来加载这样的:

results[0] = { 
prop0: "String", 
prop1: "String", 
prop2: bool, 
prop3: Object { 
    prop0: "String" 
} 
prop4: "String" 
} 

我做这件事情,第一,在那里我创建一个对象数组,其中包含该嵌套对象属性中的唯一字符串以及字符串出现在数据集内的次数。

我现在需要的,对于每一个唯一的字符串,与原始数据集,其中results.prop3.prop0塌陷数组中的字符串匹配中创建对象的数组。这足以令人困惑吗?

从这:

名称: “乔”,
地点:状态{
状态: “纽约”,
},
活动:假
}

对此:

New York(120)
乔 - 死

到目前为止,我已经得到了这一点,使用underscore.js:

for(index in collapsed){ 
var details = _.where(results,{state: {state: collapsed[index][0]}}); 

console.log(details); 

} 

但显然我是个白痴的地方,因为这只是在我的塌陷阵列返回的每一件事情空数组。

样品倒塌
的[{ “纽约”,120},{ “格”,79},{ “另一个地方”,15}。

我基本上想建在哪里,每个地方的下面,我在广场状态字符串匹配在嵌套对象的底部一路对象加载数据的表。

要JM _____的点,我要去尝试。

+1

你可以包含什么倒塌看起来像一个样本?它是'结果[我] .Place.state.state'? – jmunsch

回答

0

下面是基于_.reduce()_.filter()

获取与由状态

var collapsed = _.reduce(response, function(memo, item) { 
    if (! memo[item.Place.state]) { 
    memo[item.Place.state] = 0; 
    } 
    memo[item.Place.state]++; 
    return memo; 
}, {}); 

结果分组的项目的数目折叠阵列以下划线数据操作的实例:分组的对象与状态作为键和计数作为值。

{ 
    London: 2, 
    New York: 4 
} 

入门的状态过滤数据

var filtered = _.filter(response, function(item) { 
    return item.Place.state === "New York"; 
}); 

结果:与仅纽约市的对象数组

链接jsbin演示

+0

这绝对有效。我想我想尝试一下,并且聪明地使用折叠数组中的键作为由json响应创建的对象数组上的过滤文本。我现在意识到,如果没有办法为折叠数组中的每个值动态创建不同的数组,则解决方案是不可行的。值得庆幸的是,在实际的解决方案中,折叠阵列将始终具有相同的值,因此我可以在其中硬编码。 – ChrisPEditor