如何将数组 foreach 到 javascript 中的数组对象

how to foreach array to array object in javascript

我对在 Javascript 中执行 foreach 数组到数组对象感到非常困惑,我已经对 Javascript 中的 foreach 对象做了很多研究,我尝试了很多方法但没有任何效果。我想要实现的就是拥有这样的数据 JSON :

[
            {
                "name": "First Data",
                "data": [
                    {
                        "y": 95,
                        "total":100,
                        "md": "1",
                        "name": "National",
                        "drillup" : 'level0',
                        "drilldown" : "3",
                        "next"  : "level2"
                    }

                ]
            }
            ,{
                "name": "Second Data",
                "data": [
                    {
                        "y": 95,
                        "total":100,
                        "md": "1",
                        "name": "National",
                        "drillup" : 'National',
                        "drilldown" : "3",
                        "next"  : "level2"
                    }

                ]
            }
        ]

并且我尝试根据我的一些研究发现来执行 foreach,但结果并不像我想要的或不喜欢我想要达到的目标.. 这是我试过的脚本:

  dataFirstSecond = await informationModel.getdata();
    Object.entries(dataRegularSecondary).forEach(entry => {
        const [key, value] = entry;
        returnData[key] = [
            {
                name: value.name,
                data: [{
                    y: value.y,
                    total: value.total_ada,
                    next: 'level_2',
                    drilldown: true,
                }]
            }]
    });

这是我尝试的脚本的结果或输出:

{
    "0": [
        {
            "name": "First Data",
            "data": [
                {
                    "y": 22.973,
                    "total": 17,
                    "next": "level_2",
                    "drilldown": true
                }
            ]
        }
    ],
    "1": [
        {
            "name": "Second Data",
            "data": [
                {
                    "y": 5.4054,
                    "total": 4,
                    "next": "level_2",
                    "drilldown": true
                }
            ]
        }
    ]
}

有人可以帮我实现我想要的数据吗?

如果函数 informationModel.getdata(); returns 是 Object,您可以使用方法 JSON.stringify(Object) 轻松地将 Object 转换为 JSON。例如,您可以尝试将此 Object 转换为 String,然后将 String 转换为 JSON

let JSONString = JSON.stringify(informationModel.getdata());
let JSON_Object = JSON.parse(JSONString);

如果 dataRegularSecondary 是数组而不是对象,您可以使用 map:

dataRegularSecondary.map(value => {
      return {
        name: value.name,
        data: [{
          y: value.y,
          total: value.total_ada,
          next: 'level_2',
          drilldown: true,
        }]
      }
    }

您的问题是how to forEach array to array object。那么这意味着 dataRegularSecondary 是一个数组,对吧? Object.entries returns 键值对数组。如果将数组传递给该方法,它将 return 索引作为键,项目作为值。

const arr = ['hello', 'world'];

Object.entries(arr); // [['0', 'hello'], ['1', 'world']]

跳过 Object.entries,直接使用 dataRegularSecondary forEach

至于你的输出,看起来 returnData 也是一个对象。确保它是一个数组,然后将数据推入其中。

dataRegularSecondary.forEach(value => {
  returnData.push({
    name: value.name,
    data: [{
      y: value.y,
      total: value.total_ada,
      next: 'level_2',
      drilldown: true,
    }],
  });
});

或者您也可以使用 map

const returnData = dataRegularSecondary.map(value => ({
  name: value.name,
  data: [{
    y: value.y,
    total: value.total_ada,
    next: 'level_2',
    drilldown: true,
  }],
}));

returnData[key] = [{ ... }] 应该只是 returnData.push({ ... }),并确保 returnData 是一个数组(例如 returnData = []