d3.js:在数组

时间:2016-07-04 08:07:37

标签: javascript arrays json d3.js sub-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上使用filter和map来获取dateC2。或者,是否有更快的方法从原始结构中获得所需的结构?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

我认为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);
});