【问题标题】:How to add parameter of type array of object, in Array of Object Dynamically in Javascript/Nodejs?如何在Javascript / Nodejs中动态地在对象数组中添加对象类型数组的参数?
【发布时间】:2020-06-09 23:42:52
【问题描述】:

定义一个对象数组为:

"data": {
    "primary":[
        { "menuOptions":
            { "title": 'title1',
              "sortOrder": 1},
          "status": 1,
          "menuType": 'header',
          "MenuID": 'AB1CD' 
        },
        { "menuOptions":
           { "title": 'title2',
             "sortOrder": 2},
          "status": 1,
          "menuType": 'header',
          "MenuID": 'EF2GH' 
       }
  ]
}

并且想在data.primary.SubMenu 中为每个对象添加一个名为SubMenu 的数组类型参数。 现在想分配为[]

添加子菜单参数后的预期对象:

"data": {
        "primary":[
            { "menuOptions":
                { "title": 'title1',
                  "sortOrder": 1},
              "status": 1,
              "menuType": 'header',
              "MenuID": 'AB1CD',
              "SubMenu": [
                  {
                      "menuOptions":
                          { "title": 'subtitle1',
                            "sortOrder": 1},
                      "status": 1,
                      "menuType": 'header',
                      "MenuID": 'AB1CD1'
                  }
              ]
            },
            { "menuOptions":
               { "title": 'title2',
                 "sortOrder": 2},
              "status": 1,
              "menuType": 'header',
              "MenuID": 'EF2GH',
              "SubMenu": []
           }
      ]
    }

尝试了这样做的方法,

  • 使用 Object.assign()
  • 使用 Array.push()
  • 使用 Array.push(Object.assign())
  • 使用 data.primary[0].newProperty = [] 然后将一个对象推入该数组。 但是当尝试 console.log() data.primary[0] 时它不会显示。

【问题讨论】:

    标签: javascript arrays node.js object key-value


    【解决方案1】:

    这样试试

    
    data.primary.map(d=>{
           d.SubMenu = // your value 
    })
    
    
    console.log(data)
    

    【讨论】:

    【解决方案2】:

    您可以直接将对象分配给现有对象数组中的新参数。以下是将一个对象分配给新参数(即 SubMenu)的示例。如果要将其分配给每个对象,请使用 foreach 循环并按如下所示的相同方式分配它。

    data.primary.SubMenu = [{
      "menuOptions": {
        "title:"
        'subtitle1',
        "sortOrder": 1
      },
      "status": 1,
      "menuType": 'header',
      "MenuID": 'AB1CD1'
    }]

    【讨论】:

    • 它没有按预期工作。我在问题中提到的预期响应,为此我打印了 data 但现在我已经将静态分配实现为您的代码 sn-p:我必须打印 data .primary.SubMenu.
    • 还尝试使用 forEach 循环将 [] 分配给 primary 数组中的每个对象
    【解决方案3】:

    重申您的问题,您有一个对象,其中包含一个对象数组,并且在每个对象中,您需要一个名为“SubMenu”的数组,初始化为一个空数组[]

    const data = {
        "primary":[
            { "menuOptions":
                { "title": 'title1',
                  "sortOrder": 1},
              "status": 1,
              "menuType": 'header',
              "MenuID": 'AB1CD' 
            },
            { "menuOptions":
               { "title": 'title2',
                 "sortOrder": 2},
              "status": 1,
              "menuType": 'header',
              "MenuID": 'EF2GH' 
           }
      ]
    }
    
    //initialize the array in each object
    data.primary.forEach(obj => {
    obj.SubMenu = [];
    })
    
    //push whatever you want in it for the first object
    data.primary[0].SubMenu.push({
                          "menuOptions":
                              { "title": 'subtitle1',
                                "sortOrder": 1},
                          "status": 1,
                          "menuType": 'header',
                          "MenuID": 'AB1CD1'
                      })
    
    console.log(data);

    【讨论】:

    • 现有对象数组没有变化。即使SubMenu : [] 也无法获得预期 JSON 对象中所示的子菜单
    • 您的程序中是否将“数据”对象存储在变量中?
    • 没有数据只是我用来构建的响应的一部分,因为您在代码中使用它来存储整个主对象。简单地说,我只是将主要用于进一步的逻辑。但是是的,我已经在 data 中初始化了 primary
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 2019-04-28
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2016-05-25
    • 2021-04-23
    相关资源
    最近更新 更多