将一维数组中的两个合并为二维数组javascript

时间:2017-10-16 09:48:58

标签: javascript arrays multidimensional-array

我有n(但现在,仅举两个)一维数组,就像我控制台的这张图片一样:

enter image description here

我想通过相应的键合并这两个数组并将其放入二维数组中:

结果如下:

[["1 279 226,08" , "127"],[null , null],["-188 033,77", "154"],..... so on ......]

一维数组的列表是动态的,它可能超过2个数组。

例如,如果我有3个数组,那么我的二维数组看起来像:

[ ["1 279 226,08" , "127" , "blabla"], [null , null , "blabla"], ["-188 033,77", "154", "blabla"], ..... so on ......]

任何实施它的想法都会受到赞赏。

4 个答案:

答案 0 :(得分:0)

这应该做你想要的。



var arr1 = [1, 2, 3, 4, 5, 6];
var arr2 = [6, 5, 4, 3, 2, 1];
var arr3 = [7, 8, 9, 10, 11, 5];
var arr4 = [12, 34, 55, 77, 22, 426];

var arrCollection = [arr1, arr2, arr3, arr4];

// if array sizes are variable.
// if not max = arrCollection[0].length will do
var max = Math.max.apply(Math, arrCollection.map(function(a) {
  return a.length;
}));

var arrFinal = [];

for (let i = 0; i < max; i++) {
  var arr = [];
  arrCollection.forEach(function(a) {
    arr.push(a[i]);
  });
  arrFinal.push(arr);
}

console.log(arrFinal);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用两个forEach()循环创建此内容。

&#13;
&#13;
var arr1 = [[1, 2], [3, 4], [5, 6]];
var arr2 = [[1, 2, 3], [4, 5, 6], [7, 8], [9, 10, 12, 14]];

let merge = function(arr) {
  var result = [];
  arr.forEach(function(e, i) {
    e.forEach(function(a, j) {
      if (!result[j]) result[j] = [a];
      else result[j].push(a)
    })
  });

  return result;
}

console.log(JSON.stringify(merge(arr1)))
console.log(JSON.stringify(merge(arr2)))
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用嵌套循环转置数组并切换索引以分配值。

var array = [["1 279 226,08", null, "-188 033,77"], ["127", null, "154"], ["blabla", "blabla", "blabla"]],
    result = array.reduce(function (r, a, i) {
        a.forEach(function (b, j) {
            r[j] = r[j] || [];
            r[j][i] = b;
        });
        return r;
    }, []);

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 3 :(得分:0)

由于所有数组都具有相同的大小,因此您可以仅在第一个数组的长度上循环,即a

然后我们将appendArraysa,...的单个值传递给b,然后我们返回一个数组以推送到merged

&#13;
&#13;
var a = ["123", null, "ciao"]
var b = ["321", 1, "pippo"]
var c = ["111", 5, "co"]

var merged = []

for (i = 0; i < a.length; i++) {
  merged.push(appendArrays(a[i], b[i], c[i]));
}
console.log(merged);

function appendArrays() {
  var temp = []
  for (var i = 0; i < arguments.length; i++) {
    temp.push(arguments[i]);
  }
  return temp;
}
&#13;
&#13;
&#13;