Как добавить параметр типа массив объекта, в массиве объекта динамически в Javascript / Nodejs? - PullRequest
0 голосов
/ 26 февраля 2020

Определен один массив объектов как:

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

И вы хотите добавить еще один параметр массива типов с именем SubMenu в data.primary.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": []
           }
      ]
    }

Пробные способы сделать это,

  • Используемый объект. assign ()
  • Используется Array.pu sh ()
  • Используется Array.pu sh (Object.assign ())
  • Используется data.primary [0 ] .newProperty = [] и затем pu sh один объект в этот массив. Но он не показывает при попытке console.log () data.primary [0] .

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

Вы можете напрямую назначить объект новому параметру в существующем массиве объекта. Ниже приведен пример назначения одного объекта новому параметру (т.е. SubMenu). Если вы хотите назначить его каждому объекту, используйте foreach l oop и присвойте его так же, как показано ниже.

data.primary.SubMenu = [{
  "menuOptions": {
    "title:"
    'subtitle1',
    "sortOrder": 1
  },
  "status": 1,
  "menuType": 'header',
  "MenuID": 'AB1CD1'
}]
0 голосов
/ 26 февраля 2020

Чтобы повторить вашу проблему, у вас есть объект с массивом объектов, и в каждом из этих объектов вам нужен массив с именем "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);
0 голосов
/ 26 февраля 2020

Попробуй вот так


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


console.log(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...