将一个对象数组转换为另一个具有不同结构的对象数组

伊曼纽拉·扬克

我有一个具有这种结构的对象数组:

    let countries = [
       {
          "country": "Aruba",
          "country_key": "ABW",
          "continent": "South America",
          "entries": [
             {
                "year": "2001",
                "import": "134000",
                "export": "0"
             },
             {
                "year": "2002",
                "import": "0",
                "export": "0"
             },
             {
                "year": "2003",
                "import": "0",
                "export": "0"
             },
             {
                "year": "2004",
                "import": "0",
                "export": "0"
             },
             {
                "year": "2005",
                "import": "3400000",
                "export": "0"
             }
          ]
       },
       {
          "country": "Afghanistan",
          "country_key": "AFG",
          "continent": "Asia",
          "entries": [
             {
                "year": "2001",
                "import": "0",
                "export": "0"
             },
             {
                "year": "2002",
                "import": "34000000",
                "export": "0"
             },
             {
                "year": "2003",
                "import": "0",
                "export": "0"
             },
             {
                "year": "2004",
                "import": "0",
                "export": "0"
             },
             {
                "year": "2005",
                "import": "35000000",
                "export": "0"
             }
          ]
       },
         {
        "country": "Argentina",
        "country_key": "ARG",
        "continent": "South America",
        "entries": [
           {
              "year": "2001",
              "import": "6000000",
              "export": "6000000"
           },
           {
              "year": "2002",
              "import": "16000000",
              "export": "0"
           },
           {
              "year": "2003",
              "import": "12000000",
              "export": "0"
           },
           {
              "year": "2004",
              "import": "169000000",
              "export": "0"
           },
           {
              "year": "2005",
              "import": "3000000",
              "export": "0"
           }
        ]
        }
     ];

我想将其转换为具有此结构的另一个对象数组:

[
     {
      "year": "2001",
       "entries": [
            {
                "continent": "South America",
                "country": "Aruba",
                "import": "134000",
                "export": "0"
            },
            {
                "continent": "Asia",
                "country": "Afghanistan",
                "import": "0",
                "export": "0"
            },
            {
                "continent": "South America",
                "country": "Argentina",
                "import": "6000000",
                "export": "6000000"
            }
        ]
      },
      {
      "year": "2002",
       "entries": [
            {
                "continent": "South America",
                "country": "Aruba",
                "import": "0",
                "export": "0"
            },
            {
                "continent": "Asia",
                "country": "Afghanistan",
                "import": "34000000",
                "export": "0"
            },
            {
                "continent": "South America",
                "country": "Argentina",
                "import": "16000000",
                "export": "0"
            }
        ]
      }
    ]

到目前为止,我已经尝试过这段代码:

    let array1 = countries.map(function(countryList) {
        return countryList.entries.map(function(entry) {
            return {year: entry.year, import: entry.import, export: entry.export}
        });
    });

    let array2 = array1.map(function(arr) {
        return arr.map(function (subarr) {
            return {year: subarr.year, 
                entries: countries.map(function(countryList) {
                return {
                    continent: countryList.continent,
                    country: countryList.country,
                    import: subarr.import,
                    export: subarr.export
                };
            })
            };
        });
    });

另请参阅此代码笔有关如何实现目标的任何建议,我将不胜感激。

非常感谢

安瑟姆
const stats = [];

function yearNotCreated(year) {
    let found = true;
    if(stats.filter(stat => stat.year === year).length) {
        found = false;
    }
    return found;
}

function getYearIndex(year) {
    let yearIndex;
    for(let i = 0; i < stats.length; i++) {
        if (stats[i].year === year) {
            yearIndex = i;
            break;
        }
    }
    return yearIndex;
}


countries.forEach((country) => {
     country.entries.forEach(entry => {
          const newEntry = {
             continent: country.continent,
             country: country.country,
             "import": entry.import,
             "export": entry.export
         };
         if (yearNotCreated(entry.year)) {
             const yearEntry = {
                 year: entry.year,
                 entries: []
             };
             yearEntry.entries.push(newEntry);
             stats.push(yearEntry);
         } else {
            stats[getYearIndex(entry.year)].entries.push(newEntry);
         }
     });
});
console.log(stats);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将具有数组值的对象转换为另一个对象数组

将对象数组转换为另一个结构化对象数组

将具有不同键的对象数组转换为一个对象

将每个具有一个对象的 JSON 对象数组转换为 JSON 对象数组

如何“将对象解析并转换为具有不同“键/值”结构的另一个对象”

使用php将数组转换为另一个json对象内部的json对象

将嵌套对象数组转换为另一个嵌套索引对象

将这个对象数组转换为另一个对象的最佳方法是什么?

将通用对象数组转换为另一个通用类的数组

将模型类转换为具有不同对象名称的另一个类

使用jQuery将对象数组转换为另一个对象数组

将 JS 对象数组推送到具有匹配对象键的另一个对象数组

将具有相同属性的对象数组转换为具有数组值的一个对象

将数组/对象键值替换为另一个数组/对象javascript的键值

将 Javascript 对象数组转换为一个对象

从另一个具有相同键的对象数组创建一个对象数组

JavaScript使用lodash将对象数组转换为另一个对象

如何将一组对象(不同长度)转换为一个与原始数组中的元素具有不同属性的对象?

将具有一个字段(对象类型)的Json对象转换为对象的json数组

如何将接收到的对象转换为具有所需数据的另一个对象?

从另一个对象数组构造具有两个特定对象值对的对象数组

将平面 JSON 结构转换为对象并添加另一个属性

通过具有重复键的另一个数组过滤对象数组

Javascript - 过滤包含具有来自另一个数组的值的数组的对象

遍历对象数组与另一个对象数组

可以将一个对象分配给另一个具有不同类型的对象

将一个对象发送到另一个对象内的数组

将一个numpy数组添加到另一个具有不同维度的数组

创建一个NSSet数组,该数组具有另一个NSArray中存在的对象的不同属性的值