2016-02-16 119 views
-4

我想以特定方式合併一些數組。它看起來像現在:Javascript陣列合併

[key1, key2, key3, key4] 
[val1, val2, val3, val4] 
[val1, val2, val3, val4] 
[val1, val2, val3, val4] 
[val1, val2, val3, val4] 

我多麼希望它在去年底看是

[key1, val1, val1, val1, val1] 
[key2, val2, val2, val2, val2] 
[key3, val3, val3, val3, val3] 
[key4, val4, val4, val4, val4] 

希望你們對我的感謝的解決方案! PS:如果有什麼不夠清楚的只是評論。

+0

'key1'在輸出?不是'key2','key3'等等? – Andy

+2

另外,你已經試過的代碼已經添加到你的問題。 – Andy

+0

哎呀,你是對的,它應該是key2,key3等 –

回答

0

只需更改行和列。基本上這樣的:r[j][i] = x[i][j]

var data = [['key1', 'key2', 'key3', 'key4'], ['val11', 'val21', 'val31', 'val41'], ['val12', 'val22', 'val32', 'val42'], ['val13', 'val23', 'val33', 'val43'], ['val14', 'val24', 'val34', 'val44']], 
 
    pivot = function (data) { 
 
     var r = []; 
 
     data.forEach(function (a, i) { 
 
      a.forEach(function (b, j) { 
 
       r[j] = r[j] || []; 
 
       r[j][i] = b; 
 
      }); 
 
     }); 
 
     return r; 
 
    }(data); 
 

 
document.write('<pre>' + JSON.stringify(pivot, 0, 4) + '</pre>');

+0

這可能是解決方案,但事情是數組是動態的,所以它沒有固定的索引。例如,鍵有30個值,值數組也有30個值,它會繼續工作嗎? –

+0

@LeroySteding,爲什麼不呢,用你的數據試一下。 –

+0

看起來好像數據沒有正確排列,有些值是在他們不屬於的地方,哈哈,我現在正在尋找它! –

0

您可以創建這些數組的數組,並填寫您的新陣列象下面這樣:所有陣列

var array1 = ["key1", "key2", "key3", "key4"]; 
var array2 = ["val1", "val2", "val3", "val4"]; 
var array3 = ["val1", "val2", "val3", "val4"]; 
var array4 = ["val1", "val2", "val3", "val4"]; 
var array5 = ["val1", "val2", "val3", "val4"]; 

allArrays = [array1,array2,array3,array4,array5]; 
array11 = [] 
array22 = [] 
array33 = [] 
array44 = [] 
for(var i = 0; i < allArrays.length; i++){ 
    array11.push(allArrays[i][0]); 
    array22.push(allArrays[i][1]); 
    array33.push(allArrays[i][2]); 
    array44.push(allArrays[i][3]); 

} 

https://jsfiddle.net/fh1ou9c2/