我想在数组中的对象中获取数组。
原始结构:
数组[对象,...,对象]
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。或者,是否有更快的方法从原始结构中获得所需的结构?
答案 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);
});