我正处于一个嵌套的对象 hell 中。我觉得这个问题有一个答案,我只是不太清楚如何表达正在发生的事情。
因此,我从 REST 返回中获取了这个庞大的对象数组(大约 450 多个对象),加载方式如下:
results[0] = {
prop0: "String",
prop1: "String",
prop2: bool,
prop3: Object {
prop0: "String"
}
prop4: "String"
}
我首先要做这件事,创建一个对象数组,其中仅包含该嵌套对象属性中的唯一字符串,以及该字符串在数据集中出现的次数。 。
我现在需要为每个唯一的字符串在原始数据集中创建一个对象数组,其中 results.prop3.prop0 与折叠数组中的字符串匹配。这够令人困惑的吗?
从此:
姓名:“乔”,
地点:州{
州:“纽约”,
},
活着:假
}
对此:
纽约 (120)
乔 - 死了
我已经使用 underscore.js 到目前为止了:
for(index in collapsed){
var details = _.where(results,{state: {state: collapsed[index][0]}});
console.log(details);
}
但我显然是个白痴,因为这只是为折叠数组中的每个内容返回一个空数组。
折叠示例
[{"纽约",120},{"乔治亚",79},{"另一个地方",15}]。
我基本上想构建一个数据表,在每个位置下面,我加载对象,其中 Place 与嵌套对象底部的状态字符串一直匹配。
就 jm_____ 的观点而言,我要尝试一下。
最佳答案
以下是基于_.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演示
关于javascript - 按数组中对象内的对象属性过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33463632/