【问题标题】:Javascript - combine the elements of an multidimensional array [duplicate]Javascript - 组合多维数组的元素[重复]
【发布时间】:2016-05-17 12:26:03
【问题描述】:

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

例如如果我有

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"]

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

【问题讨论】:

    标签: javascript arrays multidimensional-array


    【解决方案1】:

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

    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>');

    【讨论】:

    • 谢谢你,尼娜,真的很感激
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2013-07-09
    • 2021-09-10
    • 2018-02-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多