首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -组合多维数组的元素

Javascript -组合多维数组的元素
EN

Stack Overflow用户
提问于 2016-05-17 12:26:03
回答 1查看 199关注 0票数 2

我试图将多维数组的所有元素组合成一个元素的组合。

如果我有

代码语言:javascript
复制
var array = [
      ['a'],
      ['1', '2', '3', '4'],
      ['A']
];

结果必须如下所示:

代码语言:javascript
复制
["a1A", "a2A", "a3A", "a4A"]

我可以通过以下代码实现这一结果:

代码语言:javascript
复制
  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);

问题是,如果我向第一个或最后一个成员添加了更多的元素,它就不能像预期的那样工作。

例如,这个数组

代码语言:javascript
复制
var array = [
      ['a', 'b'],
      ['1', '2', '3', '4'],
      ['A']
];

返回:

代码语言:javascript
复制
["a1A", "a2A", "a3A", "a4A", "b1", "b2", "b3", "b4"]

这应该是:

代码语言:javascript
复制
["a1A", "a2A", "a3A", "a4A", "b1A", "b2A", "b3A", "b4A"]

任何帮助修复我的代码是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-17 12:30:56

您可以使用迭代和递归方法来处理可变长度的部件及其长度。

代码语言:javascript
复制
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>');

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37276165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档