我试图将多维数组的所有元素组合成一个元素的组合。
如果我有
var array = [
['a'],
['1', '2', '3', '4'],
['A']
];结果必须如下所示:
["a1A", "a2A", "a3A", "a4A"]我可以通过以下代码实现这一结果:
var finalArray = [];
var f1 = 0;
for (var i = 0; i < array.length - 1; i ++) {
f1 = 0;
for (var j = 0; j < array[i].length; j ++) {
for (var k = 0; k < array[i + 1].length; k ++) {
if (finalArray[f1])
finalArray[f1] += array[i + 1][k];
else
finalArray[f1] = array[i][j] + array[i + 1][k];
f1 ++;
}
}
}
console.log(finalArray);问题是,如果我向第一个或最后一个成员添加了更多的元素,它就不能像预期的那样工作。
例如,这个数组
var array = [
['a', 'b'],
['1', '2', '3', '4'],
['A']
];返回:
["a1A", "a2A", "a3A", "a4A", "b1", "b2", "b3", "b4"]这应该是:
["a1A", "a2A", "a3A", "a4A", "b1A", "b2A", "b3A", "b4A"]任何帮助修复我的代码是非常感谢的。
发布于 2016-05-17 12:30:56
您可以使用迭代和递归方法来处理可变长度的部件及其长度。
function combine(array) {
function c(part, index) {
array[index].forEach(function (a) {
var p = part.concat(a);
if (p.length === array.length) {
r.push(p.join(''));
return;
}
c(p, index + 1);
});
}
var r = [];
c([], 0);
return r;
}
var result = combine([['a', 'b', 'c'], ['1', '2', '3', '4'], ['A', 'B']]);
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
https://stackoverflow.com/questions/37276165
复制相似问题