2017-08-16 134 views
0

JavaScript的新功能在这里如此裸露请与我。 我有一个二维数组,看起来像:Javascript 2D数组获取每个元素

var example = [['Version', 'Number'], [ 'V1.0', 1 ], [ 'V2.0', 2 ]]; 

我想通过阵列在自己的新数组进行迭代,并采取了“V1.0”和“V2.0”,并存储它们,对'1'和'2'做同样的操作。我需要打破使用的数据了chart.js之

我的循环如下所示:

var labels = []; 
var data = []; 

for (var i=0; i<example.length; i++) { 
    labels.push = (example[i][0]); 
} 

for (var j=0; j<example.length; j++) { 
    data.push = (example[0][j]); 
} 

我不知道如何正确地让任一元素到自己的阵列以备后用。任何帮助,将不胜感激。

+1

的可能的复制[对于多维JavaScript数组循环(https://stackoverflow.com/questions/ 10021847/for-loop-in-multidimensional-javascript-array) –

回答

4

您可以使用map来做到这一点,并shift的结果,以消除第一次发生。

var example = [ 
 
    ['Version', 'Number'], 
 
    ['V1.0', 1], 
 
    ['V2.0', 2] 
 
]; 
 

 
var result = example.map(e => e[0]) 
 

 
console.log(result);

+1

太好了,谢谢!这工作完美。 – G3TH

0

这看起来像你想达到什么目的:

for(var i=0; i<example.length; i++){ 

    labels.push(example[i][0]) 
    data.push(example[i][1]) 
} 
1

从我所看到到你的例子中,第一对元素都为您的数据的钥匙,进入你的例子会将它们包含到你的最终数组中。

本示例将生成一个字典,其中键和数字包含数组中的对应值。

var example = [['Version', 'Number'], [ 'V1.0', 1 ], [ 'V2.0', 2 ]]; 
 

 
function extract(items) { 
 
    var keys = {}, 
 
     version = items[0][0], 
 
     number = items[0][1]; 
 
    
 
    keys[version] = []; 
 
    keys[number] = []; 
 
    
 
    return items.slice(1).reduce(function(acc, item) { 
 
    acc[version].push(item[0]);  
 
    acc[number].push(item[1]); 
 
    
 
    return acc; 
 
    }, keys); 
 
} 
 

 
var result = extract(example); 
 
console.log(result);

从这一点来说,你可以这样做:

var labels = result.Version; 
var data = result.Number; 
+0

我喜欢这个回答。我给出了一个高于接受答案的答案,因为它更简单。 – G3TH

相关问题