【问题标题】:How to convert array of objects (key-value pair) to nested arrays only如何仅将对象数组(键值对)转换为嵌套数组
【发布时间】:2016-11-17 05:05:40
【问题描述】:

这是我目前拥有的。

[
    [
        {"label":"Year","type":"number"},
        {"label":"Value","type":"number"},
    ],
    {"2013" : 70}, 
    {"2014" : 78}, 
    {"2015" : 125}, 
    {"2016" : 153}
]

这是我用来生成上述代码的。

var data = [
    {"Year":2013,"Product":"A","Value":0},
    {"Year":2013,"Product":"B","Value":20},
    {"Year":2013,"Product":"A","Value":50},
    {"Year":2014,"Product":"D","Value":55},
    {"Year":2014,"Product":"M","Value":23},
    {"Year":2015,"Product":"D","Value":73},
    {"Year":2015,"Product":"A","Value":52},
    {"Year":2016,"Product":"B","Value":65},
    {"Year":2016,"Product":"A","Value":88}
];

var sum = data.reduce(function(res, product) {

  if (!(product.Year in res)) {
    res[product.Year] = product.Value;
  } else {
    res[product.Year] += product.Value;
  }
  return res;
}, {});

var result = [];

for (var year in sum) {
  var tmp = {};
  tmp[year] = sum[year];
  result.push(tmp);
}
result.splice(0, 0, [{
  label: 'Year',
  type: 'number'
}, {
  label: 'Value',
  type: 'number'
}]);

我想将它们组织成 [Year, Value] 对而不是对象,如下所示:

[["Year", "Value"], ["2013", 70], ["2014", 78], ["2015", 125], ["2016", 153]]

【问题讨论】:

  • 您的意思是 ["Year","Value"] ... 并且您只想转换为数组 - 因为您寻求的输出根本不是对象
  • 是的,实际上我需要这些数据用于 google.visualization.arrayToDataTable();
  • 我刚刚编辑/更新了我的代码以向您展示我是如何生成数据的
  • 你的输出要求还是不行……你是说[["Year","Value"], ["2013" , 70], ["2014", 78], ["2015", 125], ["2016",153]]
  • 是的,正如我告诉你的,我需要这些数据用于 google.visualization.arrayToDataTable();如果你能以图表接受的任何格式给我,那就可以了。

标签: javascript angularjs arrays json object


【解决方案1】:

您正在将对象 ({}) 推送到数组中。您想要的是在下面显示的第二行中使用数组括号([]):

for (var year in sum) {
  var tmp = [];
  tmp[year] = sum[year];
  result.push(tmp);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-26
    • 2017-03-08
    • 2015-05-17
    • 2020-07-03
    • 2017-11-15
    • 1970-01-01
    • 2021-05-28
    • 2015-04-28
    相关资源
    最近更新 更多