d3.js: 提取数组中对象中的数组

d3.js: extract array in object within array

我想在数组中的对象中获取数组。

原始结构:
数组[对象, ..., 对象]

var dateC = [ 
      {
      key: "2016-01-01",
      values: **[
        {city:"", country:""...},
        {...}
      ]**},
      {
      key: "2016-01-02",
      values: [
        {...},
        {...}
      ]}
]

var dateC2 = dateC.filter(function(d) { return d.key == selected; }).map(function(d) { return d.values })

我使用上面的代码从 dateC 中提取了具有键“2016-01-01”的对象。

当前结构:
数组[数组[114]]

var dateC2 = [ 
  {
  key: "2016-01-01",
  values: **[
    {city:"", country:""...},
    {...}
  ]**}
]

所需结构:
数组[对象,...,对象]

**[{city:"", country:""...}, {...}]**

我想要的数组包含在**

我不确定应该如何使用 forEach 方法从值中获取数组,因为我已经在 dateC 上使用过滤器和映射来获取 dateC2。或者,有没有更快的方法从原始结构中获得所需的结构?

您可以使用 Array#reduce 的单个循环。

var dateC2 = dateC.reduce(function(r, d) {
    return d.key == selected ? 
        r.concat(d.values):
        r;
}, []);

我认为 Array.prototype.forEach 是另一个选择:

var dateC2 = [];
dateC.forEach(function(d) {
    if(d.key == selected)
         dateC2 = dateC2.concat(d.values);
});

var dateC2 = [];
dateC.forEach(function(d) {
    if(d.key == selected)
        Array.prototype.push.apply(dateC2, d.values);
});