繁体   English   中英

将数据转换为数组

[英]Converting Data Into An Array Of Arrays

我目前有数据以PHP(Laravel)完成的应用程序后端的格式返回:

data [
   {
     "Jan": 120,
     "Feb": 283.5,
     "Mar": 10,
     "Apr": 233.92,
     "May": 327.78,
     "Jun": 190.74,
     "Jul": 10,
     "Aug": 10,
     "Sep": 10,
     "Oct": 10,
     "Nov": 10,
     "Dec": 10
   }
]

然后,我想使用JavaScript(Vue)在前端绘制此数​​据的图表,该数据是特定公司按月的平均订单价值。 尽管要使其正常工作,它必须采用以下格式:

new_data [
  ["Jan", 120],
  ["Feb", 283.5],
  ["Mar", 10],
  ["Apr", 233.92],
  ["May", 327.78],
  ["Jun", 190.74],
  ["Jul", 10],
  ["Aug", 10],
  ["Sep", 10],
  ["Oct", 10],
  ["Nov", 10],
  ["Dec", 10]
]

我已经看到了如何针对堆栈溢出(例如, 对象到数组(数组的数组) )上的类似内容执行此操作,但是没有一个适合这个确切的示例。

Array.map()Object.entries()并通过展开Array.concat()展平:

 const data = [{"Jan":120,"Feb":283.5,"Mar":10,"Apr":233.92,"May":327.78,"Jun":190.74,"Jul":10,"Aug":10,"Sep":10,"Oct":10,"Nov":10,"Dec":10}] const result = [].concat(...data.map(Object.entries)) console.log(result) 

由于您是从后端获取一个对象而不是一个数组,因此我没有找到其他解决方案,只能循环遍历对象的属性并将值推入新数组中。 看起来像这样:

var newData = [];
Object.keys(data[0]).forEach(function(month) {
    newData.push[month, data[0][month]];
});

做到这一点的经典方法是:

var data = [
   {
     "Jan": 120,
     "Feb": 283.5,
     "Mar": 10,
     "Apr": 233.92,
     "May": 327.78,
     "Jun": 190.74,
     "Jul": 10,
     "Aug": 10,
     "Sep": 10,
     "Oct": 10,
     "Nov": 10,
     "Dec": 10
   }
];
var dataArry = new Array();
for(month in data[0]){
  dataArry[dataArry.length] = [month,data[0][month]];
}

在上面的代码中, dataArryArray格式保存对象数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM