【发布时间】:2019-12-18 07:36:48
【问题描述】:
想象一个对象数组,每个对象都有特定的数组属性,例如versions、targets。我想为每个version 和target 取消组合对象。
const myArray = [
{ 'name': 'a', versions: [1, 2], targets: ['server1', 'server2']},
{ 'name': 'b', versions: [], targets: ['server1', 'server2', 'server3']},
{ 'name': 'c', versions: [1], targets: []}
]
上述myArray 的期望输出为:
[
{ 'name': 'a', version: 1, target: 'server1'},
{ 'name': 'a', version: 1, target: 'server2'},
{ 'name': 'a', version: 2, target: 'server1'},
{ 'name': 'a', version: 2, target: 'server2'},
{ 'name': 'b', version: undefined, target: 'server1'},
{ 'name': 'b', version: undefined, target: 'server2'},
{ 'name': 'b', version: undefined, target: 'server3'},
{ 'name': 'c', version: 1, target: undefined},
]
我考虑过使用嵌套的for/forEach 循环,但我几乎可以肯定必须有一个更精确和合理的方法来实现它内置的 es6 函数左右。这就是我所要求的。
【问题讨论】:
-
我没有现成的本地方法:我想这是因为您所看到的本质上是创建版本+目标的所有可能组合。这将需要一个基本的
for循环,并且您拥有的维度越多,它的复杂性就会增加,因为循环必须越嵌套。
标签: javascript arrays ecmascript-6