【发布时间】:2015-02-27 18:45:46
【问题描述】:
我想知道使用 javascript 原生数组方法(map、reduce 等)解决这个问题的最佳方法是什么。
给定一个包含 n 个对象的数组,我想创建另一个数组,该数组将包含原始数组中每个元素的 m 个对象。我可以使用常见的“for”循环来迭代数组,但我想知道它是否可以用原生数组方法解决。
示例案例:
我有一个包含 n 个元素的数组,例如“ObjectA”:
var objectA = {
name: "xxx",
tels: ["yyy","zzz"]
};
我想获得另一个“ObjectB”类型的对象数组:
var objectB = {
name: "xxx",
tel: "yyy"
};
所以在这种情况下,如果第一个数组只包含 objectA,那么所需的结果将是:
[
{
name: "xxx",
tel: "yyy"
},
{
name: "xxx",
tel: "zzz"
}
]
我尝试过使用两个嵌套的“map”调用,但回调函数只能返回一个元素。
var array1 = [objectA];
var array2 = array1.map(function(objectA){
return objectA.tels.map(function(tel){
return {
name : objectA.name,
tel : tel
};
});
});
在回调中返回另一个数组,生成一个数组数组,这不是我想要的。 Array2 结果:
[
[
{
name: "xxx",
tel: "yyy"
},
{
name: "xxx",
tel: "zzz"
}
]
]
我必须使用通用的 for 循环还是有原生的 javascript 方式?
【问题讨论】:
标签: javascript arrays dictionary