通过数组内对象内的对象属性过滤对象数组

时间:2015-11-01 15:07:21

标签: javascript jquery arrays underscore.js

我在这里嵌套了一堆物体。我觉得这有一个答案,我只是不知道如何说出发生了什么。

所以,我从REST返回(类似于450多个对象)中得到了这个巨大的对象数组,这些对象是这样加载的:

<div id="container">
    <div class="header">
        <h2>Profile</h2>
    </div>
    <figure>
        <figcaption>User: Kent</figcaption>
        <img src="avatar.png" />
        <div>
        Profile completed: 60%
        <meter value="60" min="0" max="100">2 out of 10</meter>
        </div>
    </figure>

</div>

我做这件事,首先,我创建了一个对象数组,其中只包含嵌套对象属性中的唯一字符串,以及数量的字符串出现在数据集中的次数。

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

由此:

姓名:&#34; Joe&#34;,
地点:州{
州:&#34;纽约&#34;,
},
活着:假 }

对此:

纽约(120)
乔 - 死了

我已经使用underscore.js了解了这一点:

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

但我在某个地方显然是个白痴,因为那只是在我的折叠阵列中为每个东西返回一个空数组。

已折叠的示例
[{&#34; New York&#34;,120},{&#34; Georgia&#34;,79},{&#34; Another Place&#34;,15}]。

我基本上想要构建一个数据表,在每个地方下面,我加载Place中的状态字符串一直在嵌套对象底部的对象。

对于_____,我要尝试一下。

1 个答案:

答案 0 :(得分: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演示