2016-11-04 81 views
0

我有一個多維數組如如何獲得多維數組內數組的鍵和值在JavaScript

MultArrary = [ 
['a','b'], 
['c','d'], 
['f','g'] 
] 

我需要的是得到數組內的每個陣列的鑰匙,和值,並將其推入另一個陣列

Expected array1 = ['a','c','f']; 
expected array2 = ['b','d','g']; 

任何想法如何使用JavaScript來實現這個或rxjs將是巨大的

+1

你沒有得到的鍵的任何地方。你只是在特定索引處獲取值。 –

+1

這些並不是真正的「關鍵」和「價值觀」,它們都是價值。一個恰好是索引零,另一個是索引一。你應該知道如何做到這一點,如果你可以處理數組。 – vlaz

+2

所以,我們已經看到了您的要求,但我沒有看到您嘗試過的任何代碼。看起來你需要一些'map'調用,或者可能需要'reduce'。也許你可以看看這些功能,看看你能做什麼。 –

回答

2

做的(而不是syntatically正確的最簡單的事,見下面的評論你在你的情況的問題)是使用Map(前提是你的ecmascript6能力的環境中):

var MultiArray = [ 
 
     ['a', 'b'], 
 
     ['c', 'd'], 
 
     ['f', 'g'] 
 
    ]; 
 

 
    var m = new Map(MultiArray); 
 

 
    var index0 = Array.from(m.keys()); 
 
    var index1 = Array.from(m.values()); 
 

 
    console.log(index0, index1);

+1

美麗的使用'Map'和'Array.from'。 –

1

使用Underscore.js你可以用unzip做到這一點:

var MultArrary = [ 
 
    ['a', 'b'], 
 
    ['c', 'd'], 
 
    ['f', 'g'] 
 
]; 
 

 
var rst = _.unzip(MultArrary); 
 

 
//[['a','c','f'],['b','d','g']] 
 
console.log(rst);
<script data-require="[email protected]" data-semver="1.8.3" src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

0

您可以使用單一方法並在一個任務中生成結果。

您想要結算的是pivot[0]pivot[1]

var multArrary = [['a', 'b'], ['c', 'd'], ['f', 'g']], 
 
    pivot = multArrary.reduce(function (r, a) { 
 
     a.forEach(function (b, i) { 
 
      r[i] = r[i] || []; 
 
      r[i].push(b); 
 
     }); 
 
     return r; 
 
    }, []); 
 

 
console.log(pivot);