【问题标题】:How to handle JSON data?如何处理 JSON 数据?
【发布时间】:2015-01-29 10:43:58
【问题描述】:

好的,我有一个来自 JSON 的数据。该数据的结构如下所示:

如您所见,此数据包含一个包含名称、类型和值的数组。我需要做的是转换以某种方式使用此功能:

https://developers.google.com/chart/interactive/docs/reference#google.visualization.arraytodatatable

此函数需要以这种格式给出数据:

['Country', 'Population', 'Area'],
['CN', 1324, 9640821],
['IN', 1133, 3287263],
['US', 304, 9629091],
['ID', 232, 1904569],
['BR', 187, 8514877]

所以在我的情况下是:

[name, type, value]
data iself

有什么帮助吗?

【问题讨论】:

  • 到目前为止你尝试过什么?展示你的作品。此外,您似乎有一个包含多个数组的数组,每个数组包含一个对象。这可能会帮助您入门。
  • json 是从哪里来的?
  • @Andy 我不知道使用什么语法来获取值。我已经尝试了几个测试,但没有一个有效,这就是我没有附加任何代码的原因。我知道这看起来很业余,但我不知道如何更好地解释它。无论如何,下面的人已经用 map 方法提供了精确的解决方案,这正是我正在寻找的。​​span>

标签: javascript arrays json object


【解决方案1】:

这应该可以解决问题:

var result = data.map(function(item){
    var i = item[0];
    return [i.name, i.type, i.value];
}); // Map the data from objects to the require arrays.
result.unshift(['Country', 'Population', 'Area']); // Add the description row.

这首先将源数据中的所有数据映射到[name, type, value] 数组中的[name, type, value] 项目,然后将“描述”数组添加到结果的前面。

【讨论】:

  • 谢谢,我对地图方法一无所知。这正是我想要的。很抱歉对我的问题进行了如此糟糕的描述,但我不知道如何更好地解释它。你的答案和@pawel 一样好
【解决方案2】:

您可以使用Array.prototype.map 将一组项目转换为一组修改后的项目。

在你的例子中,这可能是这样的。

var flattened = object.data.map( function( item ){
      return [ item[0].name, item[0].type, item[0].value ];
});

【讨论】:

  • 非常感谢,它涵盖了我所需要的一切,你的回答和@Cerbrus一样好
  • 是的,我们发布了非常相似的答案,相隔几秒钟 :)
【解决方案3】:

给你。懒惰的程序员服务。

// obj is your original json
var newdata = [];
for(var i=0;i<obj.data.length;i++)
  newdata.push([obj.data[i][0].name,obj.data[i][0].type,obj.data[i][0].value]);
newdata.unshift(['Country', 'Population', 'Area']);

【讨论】:

  • 循环的不同方法,但仍然和其他方法一样好,谢谢@Jabran Saeed
猜你喜欢
  • 1970-01-01
  • 2012-04-22
  • 2021-05-12
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2018-05-13
  • 2020-07-05
相关资源
最近更新 更多