【问题标题】:Merge & get then push to one array合并并获取然后推送到一个数组
【发布时间】:2022-01-08 16:09:49
【问题描述】:

我有这样的数据:

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]

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

【问题讨论】:

    标签: javascript arrays merge


    【解决方案1】:

    可以使用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)

    【讨论】:

      【解决方案2】:

      你可以使用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)

      【讨论】:

        【解决方案3】:

        weeks 是一个对象数组。 因此,您必须遍历周数组(通过使用 for-of、for-in、while、map、reduce 等)来获取对象,现在您可以使用您已经知道的键来访问对象的值(crop(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);

        【讨论】:

          猜你喜欢
          • 2021-09-21
          • 1970-01-01
          • 1970-01-01
          • 2014-01-26
          • 2015-05-11
          • 1970-01-01
          • 1970-01-01
          • 2012-09-14
          • 1970-01-01
          相关资源
          最近更新 更多