[英]JSON different objects in Javascript
I am using the code below in order to create an object (below): 我正在使用下面的代码来创建对象(如下):
var data3 = [];
data3.push('{"headers":["Dimension 1","Metric 1","Metric 2"],"rows":[');
for (var i in results.data)
{
object = '["'+ results.data[i].Country +'",'+ results.data[i].Price +','+ results.data[i].Discount+'],';
data3.push(object);
}
data3.push(']}');
What I am trying to return is the following object: 我试图返回的是以下对象:
var json_data= {"headers":["Dimension 1","Metric 1","Metric 2"],"rows":[["Australia",174,23],["Canada",502,17],["France",242,37],["Germany",102,42],["United Kingdom",126,44],["United States",1246,47],["Australia",680,80],["Canada",1241,66],["Canada",1241,66],["France",150,30],["Germany",244,22],["United Kingdom",501,9],["United States",4960,41],["Australia",9,8],["Canada",3655,70],["France",1654,95],["Germany",1190,36],["United Kingdom",1222,38],["United States",7941,53],["Australia",6829,56],["Canada",1664,75],["France",2995,88],["Germany",1487,100],["United Kingdom",9245,29],["United States",9008,66],["Australia",9376,7],["Canada",1531,31],["France",5421,22],["Germany",6975,41],["United Kingdom",4320,100],["United States",3200,41],["Australia",6688,41],["Canada",699,42],["France",5403,70],["Germany",6377,49],["United Kingdom",2471,14],["United States",6650,4],["Australia",865,70],["Canada",511,20],["France",981,36],["Germany",57,10],["United Kingdom",675,38],["United States",40,72],["Australia",400,63],["Canada",971,90],["France",357,93],["Germany",820,40],["United Kingdom",520,32],["United States",448,24],["Australia",513,40],["Canada",977,8],["France",118,84],["Germany",161,29],["United Kingdom",239,89],["United States",327,79]]};
How can I create the object without having to convert to a string? 如何创建对象而不必转换为字符串?
Starting from results.data
you can just rearrange stuff and build new Objects without ever descending into String hell. 从
results.data
开始,您可以重新排列内容并构建新的Object,而无需深入到String hell。
Use Array.map()
to turn the server response into the desired rows array, then compose a new Object: 使用
Array.map()
将服务器响应转换为所需的行数组,然后Array.map()
一个新的Object:
const results = { data: [{ Country: "Australia", Price: 174, Discount: 23 }, { Country: "Canada", Price: 502, Discount: 17 }, { Country: "France", Price: 242, Discount: 37 }, { Country: "Germany", Price: 102, Discount: 42 } ] } const rows = results.data.map(row => [row.Country, row.Price, row.Discount]); var data3 = { "headers": ["Dimension 1", "Metric 1", "Metric 2"], "rows": rows }; console.log(data3);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.