2017-10-16 277 views
-2

我有n(但現在,讓我們說只有兩個)一維數組像我的控制檯的這一形象:合併一個維數組的兩成二維數組的JavaScript

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

實現它會欣賞的任何想法。

+0

請在文本添加原始數據形式作爲輸入和相應的想要的輸出以及你所嘗試過的。 –

+0

一維數組是否具有固定長度?它們的尺寸是否相同? –

+0

@RobertoRusso:長度是動態的,但所有的數組都具有相同的大小。 – Nothing

回答

0

由於所有的陣列具有相同的大小,可以循環只是在第一陣列的lenght,即a

然後我們通過appendArraysab單值,......,我們返回數組推到merged

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; 
 
}

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

0

您可以用兩個forEach()循環創建此。

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

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; }

相關問題