我有一个棘手的问题...我有一个看起来像这样的数组:
[
[ [ 'Attribute1', 'Attribute1Synonym1' ], [ 'Attribute2' ] ],
[ [ 'Attribute3' ] ],
[ [ 'Attribute2' ] ]
]
我的结果应该是:
[
'Attribute1 Attribute2',
'Attribute1Synonym1 Attribute2',
'Attribute3',
'Attribute2'
]
棘手的是:
结果数组必须按子子数组分组
关键是,第一个索引是array(1)of arrays(2)of arrays(3) 而且我想按3级(array(3))来展平数组,结果应该是较高级之间的所有可能组合。
在第2级(第一个索引)是具有('Attribute1'和'Attribute1Synonym1')的数组 所以结果应该是:
“ Attribute1 Attribute2” 和 'Attribute1Synonym1 Attribute2'
“ Attribute2”来自上层
如果级别2 ['Attribute2']的第二个索引也有多个索引 例如['Attribute2Synonym5'] 结果应该是:
“ Attribute1 Attribute2”
'Attribute1Synonym1 Attribute2'
'Attribute1 Attribute2Synonym5'
'Attribute1Synonym1 Attribute2Synonym5'
以此类推...
答案 0 :(得分:2)
这适用于您提供的示例,但我想它对于更复杂的数组是脆弱的:
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);
}
})
});
答案 1 :(得分:1)
也许是这样的:
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);