javascript - 按数组中对象内的对象属性过滤对象数组

标签 javascript jquery arrays underscore.js

我正处于一个嵌套的对象 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/

相关文章:

JavaScript 动画,图片只做一次动画

javascript - 单击时获取链接的 href

javascript - 如何在jquery中同时访问整个数据表的一行

javascript - 如何验证这个条件呢?

javascript - 编写比基本代码更干净的高尔夫代码

javascript - 创建一个函数,该函数将从具有每个形状坐标的嵌套数组中获取多个形状

javascript - 移动版网站点击隐藏

javascript - 我如何使用 Service Worker 向我的所有 API 请求添加 Authorization header ,这是否有意义?

javascript - 保护 JS 客户端 SDK

Java 如何访问数组中保存的 HashMap 数据