【问题标题】:Javascript 2D array getting each element获取每个元素的Javascript 2D数组
【发布时间】:2018-01-24 18:32:42
【问题描述】:

我有一个看起来像这样的二维数组:

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

我不知道如何正确地将任一元素放入它们自己的数组中以供以后使用。

【问题讨论】:

标签: javascript for-loop chart.js


【解决方案1】:

从我在您的示例中看到的第一对元素是您的数据的键,在您的示例中会将它们包含到您的最终数组中。

此示例将生成一个字典,其中包含您数组中相应值的 Number 和 Version 键。

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;

【讨论】:

  • 我喜欢这个答案。我给出了上面接受的答案,因为它更简单。
【解决方案2】:

您可以使用map 来执行此操作,并使用shift 结果以删除第一次出现。

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

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

console.log(result);

【讨论】:

    【解决方案3】:

    这看起来像你想要实现的目标:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2011-07-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多