javascript - 转换 JSON 对象数组,从两个属性值创建新属性

标签 javascript json

我有一些如下所示的 JSON 数据,其中每个对象都有三个属性:

data = [
      { 
          "country" : "Ireland", 
          "year" : "2013",
          "number" : 45
      },
      { 
          "country" : "Ireland", 
          "year" : "2014",
          "number" : 23430 
      },
      { 
          "country" : "Honduras", 
          "year" : "2013",
          "number" : 1582
      },
      { 
          "country" : "Honduras", 
          "year" : "2014",
          "number" : 3458
      }
    ]

我想转换我的数据,以便每个对象只有两个属性。名为“country”的属性将保持不变。我想结合其他两个属性,使“year”的值成为新属性的键,“number”的值是新属性的值。因此新的 JSON 对象数组将如下所示:

    newData = [
      { 
          "country" : "Ireland", 
          "2013" : 45, 
          "2014" : 23430
      },
      { 
          "country" : "Honduras", 
          "2013" : 1582, 
          "2014" : 3458
      }
    ]

我该如何去做呢?我做了很多搜索,但找不到解决方案。我更愿意只使用 javascript 而不是库来完成此操作。

最佳答案

只需遍历每个数据项并将其添加到结果数组中即可。您可以创建 map 来跟踪您在迭代过程中见过的国家/地区,以便快速访问。

var newData = [],
    countries = {};
data.forEach(function (d) {
    var country = countries[d.country];
    if (!country) {
        newData.push(country = countries[d.country] = {});
    }
    country[d.year] = d.number;
});

关于javascript - 转换 JSON 对象数组,从两个属性值创建新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32793615/

相关文章:

javascript - 如何使用 Angular 4 及以上版本实现 JSON Schema Faker

javascript - 使用 RegExp 过滤价格收据

javascript - 在 IE 中旋转文本,不会变得丑陋

javascript - 如何使用 deferrable 执行一系列 Redis 操作?

json - 意外的ConvertTo-Json结果?答:它的默认深度为2

python - pyspark 将 twitter json 流式传输到 DF

javascript - 如何离线使用HighChart?

c# - 将对象从 Controller 传递给 JavaScript JQuery

javascript - 如何读取json数组中的值

php - 使用json连接android与php和mysql : Not working