我有一个棘手的问题......我有一个如下所示的数组:
[
[ [ 'Attribute1', 'Attribute1Synonym1' ], [ 'Attribute2' ] ],
[ [ 'Attribute3' ] ],
[ [ 'Attribute2' ] ]
]
我的结果应该是:
[
'Attribute1 Attribute2',
'Attribute1Synonym1 Attribute2',
'Attribute3',
'Attribute2'
]
棘手的是:
结果数组必须按子子数组进行分组
至关重要的是,第一个索引是数组(3)的数组(2)的数组(1),我希望通过级别3(数组(3))将数组展平,结果应该是每个可能的组合上层。
在级别2(第一个索引)是一个带有('Attribute1'和'Attribute1Synonym1')的数组,所以结果应该是:
'Attribute1 Attribute2'和'Attribute1Synonym1 Attribute2'
'Attribute2'来自上层
如果第2级['Attribute2']的第二个索引也有多个索引,例如['Attribute2Synonym5'],结果应为:
'Attribute1 Attribute2''Attribute1Synonym1 Attribute2' 'Attribute1 Attribute2Synonym5''Name1Synonym1 Attribute2Synonym5'
等等...
这与你提供的示例相反,但我猜它对于更复杂的数组是脆弱的:
const deep = [ [ [ 'Attribute1', 'Attribute1Synonym1' ], [ 'Attribute2' ] ],
[ [ 'Attribute3' ] ],
[ [ 'Attribute2' ] ] ];
const flat = [];
deep.forEach(element => {
const left = element[0];
const right = element[1];
left.forEach(leftElement => {
if(right){
right.forEach(rightElement => {
flat.push(leftElement + ' ' + rightElement);
});
} else {
flat.push(leftElement);
}
})
});
也许是这样的:
var input_arr=[ [ [ 'Attribute1', 'Attribute1Synonym1' ], [ 'Attribute2' ] ],
[ [ 'Attribute3' ] ],
[ [ 'Attribute2' ] ] ];
var output_arr=[];
for(var key1 in input_arr){
var sub_input_arr=input_arr[key1];
for(var key2 in sub_input_arr){
var sub_sub_input_arr=sub_input_arr[key2];
for(var key3 in sub_sub_input_arr){
output_arr.push(sub_sub_input_arr[key3]);
}
}
}
console.log(output_arr);