将多个数组中的值存储到一个数组中(JavaScript/JS)
我有一个数组,它的值是数组。我需要的是一个具有所有数组值的输出 注意:输入数组及其元素(数组)不是固定长度的 输入:将多个数组中的值存储到一个数组中(JavaScript/JS),javascript,arrays,reactjs,loops,Javascript,Arrays,Reactjs,Loops,我有一个数组,它的值是数组。我需要的是一个具有所有数组值的输出 注意:输入数组及其元素(数组)不是固定长度的 输入: array = [ [a,b], [c,d,e], [f,g] ] 输出: [ { Header : a Children : [ { Header : c Children : [ Header : f ] }, ] }, { Header : a Children
array =
[
[a,b],
[c,d,e],
[f,g]
]
输出:
[
{
Header : a
Children :
[
{
Header : c
Children :
[
Header : f
]
},
]
},
{
Header : a
Children :
[
{
Header : c
Children :
[
Header : g
]
},
]
},
{
Header : a
Children :
[
{
Header : d
Children :
[
Header : f
]
},
]
},
.
.
.
{
Header : a
Children :
[
{
Header : e
Children :
[
Header : g
]
},
]
},
{
Header : b
Children :
[
{
Header : c
Children :
[
Header : f
]
},
]
},
.
.
.
.
.
{
Header : b
Children :
[
{
Header : e
Children :
[
Header : g
]
},
]
},
]
基本上是这样,
[a,c,f],
[a,c,g],
[a,d,f],
[a,d,g],
[a,e,f],
[a,e,g],
[b,c,f],
[b,c,g],
[b,d,f],
[b,d,g],
[b,e,f],
[b,e,g]
我已尝试使用for循环,但无法获得所需的输出。
我们有什么方法可以达到这个结果吗?您可以先创建一个二维阵列。然后,使用为笛卡尔乘积中的每个数组创建嵌套对象
const数据=[
[“a”、“b”],
[“c”、“d”、“e”],
[“f”,“g”]
]
常量笛卡尔=数据减少((acc,curr)=>
acc.flatMap(c=>curr.map(n=>[].concat(c,n)))
)
常量树=arr=>arr.reduceRight((acc,Header)=>
acc?({Header,Children:[acc]}):({Header})
,空)
常量输出=笛卡尔.map(树)
log(JSON.stringify(笛卡尔))
console.log(输出)
堆栈溢出不是代码写入服务。请提供您尝试过的内容和遇到的问题。@Emilebergron我明白您的意思,但我尝试过的循环的内容现在工作正常。您可以使用此项获得第二个输出。然后,您可以循环遍历输出数组,并使用递归为每个内部数组创建一个嵌套对象。因此,问题描述中的输入似乎与输出不匹配,或者背后的逻辑不清楚,这使得帮助变得非常困难。谢谢@mateusz。我尝试了上面解释的笛卡尔方法。它工作得很好。
function join(arrayOfArrays) {
let current = [[]];
for (let array of arrayOfArrays) {
current = current.flatMap(c=>array.map(a=>[...c, a]));
}
return current;
}