合并并获取然后推送到一个数组

Merge & get then push to one array

我有这样的数据:

let data = []
let weeks = [
                            {
                                "week": 1,
                                "crop": {
                                    "aop": 1,
                                    "actual": 2,
                                    "kbm": 3
                                },
                                "hk": {
                                    "aop": 4,
                                    "actual": 5,
                                    "kbm": 6
                                },
                                "outputHkAct": 7
                            },
                            {
                                "week": 2,
                                "crop": {
                                    "aop": 11,
                                    "actual": 12,
                                    "kbm": 13
                                },
                                "hk": {
                                    "aop": 14,
                                    "actual": 15,
                                    "kbm": 16
                                },
                                "outputHkAct": 17
                            },
                        ]

我想每周在 crop(aop, actual, kbm), outputHkAct, hk(aop, actual, kbm), outputHkAct 中合并并获取值。 输出应该是:

  data =  [1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 14, 15, 16, 17]

有人可以帮忙吗?谢谢大家。

可以用forEach:

解决

let data = []
let weeks = [
    {
         "week": 1,
         "crop": {
              "aop": 1,
              "actual": 2,
              "kbm": 3
         },
         "hk": {
             "aop": 4,
             "actual": 5,
             "kbm": 6
         },
         "outputHkAct": 7
     },
     {
         "week": 2,
         "crop": {
              "aop": 11,
              "actual": 12,
              "kbm": 13
         },
         "hk": {
             "aop": 14,
             "actual": 15,
             "kbm": 16
         },
         "outputHkAct": 17
    },
]

weeks.forEach(({crop,hk,outputHkAct})=>{
    data.push(crop.aop);
    data.push(crop.actual);
    data.push(crop.kbm);
    data.push(hk.aop);
    data.push(hk.actual);
    data.push(hk.kbm);
    data.push(outputHkAct)
})

console.log(data)

你可以使用 for in loop 来帮助你遍历一个对象

let weeks = [
    {
         "week": 1,
         "crop": {
              "aop": 1,
              "actual": 2,
              "kbm": 3
         },
         "hk": {
             "aop": 4,
             "actual": 5,
             "kbm": 6
         },
         "outputHkAct": 7
     },
     {
         "week": 2,
         "crop": {
              "aop": 11,
              "actual": 12,
              "kbm": 13
         },
         "hk": {
             "aop": 14,
             "actual": 15,
             "kbm": 16
         },
         "outputHkAct": 17
    },
]
let allValues = [];
weeks.map(obj=>{
    for(let key in obj){
      if(key === 'crop' || key === 'hk'){
        for(let k in obj[key]){
          allValues.push(obj[key][k])
        }
      }else if(key === 'outputHkAct'){
        allValues.push(obj[key])
      }
    }
})


console.log(allValues)

weeks 是一个对象数组。 因此,您必须遍历周数组(通过使用 for-of、for-in、while、map、reduce 等)来获取对象,现在您可以使用已知的键访问对象的值(裁剪(aop, actual, kbm), outputHkAct, hk(aop, actual, kbm), outputHkAct).

这里是使用reduce的例子。

let weeks = [
{
    "week": 1,
    "crop": {
        "aop": 1,
        "actual": 2,
        "kbm": 3
    },
    "hk": {
        "aop": 4,
        "actual": 5,
        "kbm": 6
    },
    "outputHkAct": 7
},
{
    "week": 2,
    "crop": {
        "aop": 11,
        "actual": 12,
        "kbm": 13
    },
    "hk": {
        "aop": 14,
        "actual": 15,
        "kbm": 16
    },
    "outputHkAct": 17
},
];

let data = [...weeks.reduce((v, { crop, hk, outputHkAct }) => [...v, ...Object.values(crop), ...Object.values(hk), outputHkAct], [])];

console.log(data);