将新对象推送到嵌套对象

数据库

我正在尝试用angular8制作问卷。
有一个带有加号按钮的动态表格。您可以通过单击加号按钮添加新字段,该字段应添加到所选字段的下方。为此,我试图使嵌套的json对象,我想在特定对象之后再添加一个对象。
例如-我需要在id为3的对象之后添加新对象

这是我到目前为止所做的

mainConatiners = [
           {
               page_title : "This is first page.",
               "data":[
                   {
                       id:1,
                       title:"This is first question",
                       type:1,
                       page:0,
                       position:'0',
                       parent:'0'
                   },
                   {
                       id:2,
                       title:"This is second question",
                       type:2,
                       page:0,
                       position:'1',
                       parent:0,
                       "data":[
                           {
                               key:"[data][1][data][0]",
                               id:3,
                               title:"This is third question",
                               type:1,
                               page:0,
                               position:'1-0',
                               parent:2
                           },
                           {
                               id:4,
                               title:"This is fourth question",
                               type:2,
                               page:0,
                               position:'1-1',
                               parent:2,
                               "data":[
                                   {
                                       id:5,
                                       title:"This is tenth question",
                                       type:2,
                                       page:0,
                                       position:'1-1-0',
                                       parent:'2-4'
                                   }
                               ]
                           }
                       ]
                   }
               ]
           }]

预期产量-

mainConatiners = [
           {
               page_title : "This is first page.",
               "data":[
                   {
                       id:1,
                       title:"This is first question",
                       type:1,
                       page:0,
                       position:'0',
                       parent:'0'
                   },
                   {
                       id:2,
                       title:"This is second question",
                       type:2,
                       page:0,
                       position:'1',
                       parent:0,
                       "data":[
                           {
                               key:"[data][1][data][0]",
                               id:3,
                               title:"This is third question",
                               type:1,
                               page:0,
                               position:'1-0',
                               parent:2
                           },
                           {
                               key:"[data][1][data][0]",
                               id:12,
                               title:"This is third question",
                               type:1,
                               page:0,
                               position:'1-0',
                               parent:2
                           },
                           {
                               id:4,
                               title:"This is fourth question",
                               type:2,
                               page:0,
                               position:'1-1',
                               parent:2,
                               "data":[
                                   {
                                       id:5,
                                       title:"This is tenth question",
                                       type:2,
                                       page:0,
                                       position:'1-1-0',
                                       parent:'2-4'
                                   }
                               ]
                           }
                       ]
                   }
               ]
           }]
卡米尔(KamilKiełczewski)

这是一个可变的解决方案-我们首先将所有对象索引到idHash映射,该映射包含有关对象ID,数据数组中的对象索引和dara数组本身(parentArr)的信息-然后找到10个对象id = 3并在其后声明new。

let idHash = {} // id=> hash object (hash obiect= {obj,index,parentArr)}
let makeHash = data => (data||[]).forEach((d,i)=> 
      (idHash[d.id]={ obj:d, index:i, parentArr: data}, makeHash(d.data)));

makeHash(mainConatiners);

let hobj = idHash[3] // hash object with object id=3 after which we want to insert
hobj.parentArr.splice(hobj.index+1,0,newObj);

mainConatiners = [{
  page_title: "This is first page.",
  "data": [{
      id: 1,
      title: "This is first question",
      type: 1,
      page: 0,
      position: '0',
      parent: '0'
    },
    {
      id: 2,
      title: "This is second question",
      type: 2,
      page: 0,
      position: '1',
      parent: 0,
      "data": [{
          key: "[data][1][data][0]",
          id: 3,
          title: "This is third question",
          type: 1,
          page: 0,
          position: '1-0',
          parent: 2
        },
        {
          id: 4,
          title: "This is fourth question",
          type: 2,
          page: 0,
          position: '1-1',
          parent: 2,
          "data": [{
            id: 5,
            title: "This is tenth question",
            type: 2,
            page: 0,
            position: '1-1-0',
            parent: '2-4'
          }]
        }
      ]
    }
  ]
}]

let newObj = {
  key: "[data][1][data][0]",
  id: 12,
  title: "This is third question",
  type: 1,
  page: 0,
  position: '1-0',
  parent: 2
}

let idHash = {} // id=> hash object (hash obiect= {obj,index,parentArr)}
let makeHash = data => (data||[]).forEach((d,i)=> 
      (idHash[d.id]={ obj:d, index:i, parentArr: data}, makeHash(d.data)));

makeHash(mainConatiners);

let hobj = idHash[3] // hash object with object id=3 after which we want to insert
hobj.parentArr.splice(hobj.index+1,0,newObj);

console.log(mainConatiners)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将新的卡片对象推送到嵌套的对象数组

来自分类Dev

将项目推送到嵌套对象数组

来自分类Dev

将新对象推送到表格组件

来自分类Dev

将新对象推送到嵌套的 mongodb 文档,其中子文档中的特定条件匹配

来自分类Dev

如何将新值推送到 JavaScript 对象数组

来自分类Dev

调用 getItems() 时将添加的对象推送到新数组

来自分类Dev

Meter 将新对象推送到集合中的数组

来自分类Dev

如何将新值推送到 Store 对象?

来自分类Dev

将嵌套对象推送到数组中的下一个对象 [功能风格]

来自分类Dev

Node/JS mongoose REST API 如何将新对象推送到一个集合中的嵌套对象数组中

来自分类Javascript

将获取的数据推送到对象数组

来自分类Dev

将值推送到JSON对象

来自分类Dev

将 new 作为对象推送到数组

来自分类Dev

将数据推送到json对象中

来自分类Dev

将js对象推送到数组

来自分类Dev

将新项目从字段推送到对象

来自分类Dev

将数据推送到(嵌套的)数组,具体取决于现有的对象字段

来自分类Dev

如何将JSON对象推送到JSONB列中的嵌套数组

来自分类Dev

将元素推送到 Javascript (Socket.io) 中的嵌套对象

来自分类Dev

将新值推送到对象数组,同时保持旧值不变 React Js Next Js

来自分类Dev

VueJS将新对象推送到数组,数据不起作用

来自分类Dev

如何使用PHP将新对象推送到JSON文件中

来自分类Dev

将新对象推送到Firebase中时如何设置自定义ID

来自分类Dev

通过新数组映射然后将项目推送到现有数组中的对象

来自分类Dev

仅将某些项目从对象数组推送到新数组数组

来自分类Dev

如何使用 Class 语法将新的 Book 对象推送到空数组中?

来自分类Dev

使用PHP将对象推送到嵌套JSON?

来自分类Dev

如何推送到嵌套在对象中的数组?

来自分类Dev

JSON推送到JavaScript中的嵌套JSON对象

Related 相关文章

  1. 1

    将新的卡片对象推送到嵌套的对象数组

  2. 2

    将项目推送到嵌套对象数组

  3. 3

    将新对象推送到表格组件

  4. 4

    将新对象推送到嵌套的 mongodb 文档,其中子文档中的特定条件匹配

  5. 5

    如何将新值推送到 JavaScript 对象数组

  6. 6

    调用 getItems() 时将添加的对象推送到新数组

  7. 7

    Meter 将新对象推送到集合中的数组

  8. 8

    如何将新值推送到 Store 对象?

  9. 9

    将嵌套对象推送到数组中的下一个对象 [功能风格]

  10. 10

    Node/JS mongoose REST API 如何将新对象推送到一个集合中的嵌套对象数组中

  11. 11

    将获取的数据推送到对象数组

  12. 12

    将值推送到JSON对象

  13. 13

    将 new 作为对象推送到数组

  14. 14

    将数据推送到json对象中

  15. 15

    将js对象推送到数组

  16. 16

    将新项目从字段推送到对象

  17. 17

    将数据推送到(嵌套的)数组,具体取决于现有的对象字段

  18. 18

    如何将JSON对象推送到JSONB列中的嵌套数组

  19. 19

    将元素推送到 Javascript (Socket.io) 中的嵌套对象

  20. 20

    将新值推送到对象数组,同时保持旧值不变 React Js Next Js

  21. 21

    VueJS将新对象推送到数组,数据不起作用

  22. 22

    如何使用PHP将新对象推送到JSON文件中

  23. 23

    将新对象推送到Firebase中时如何设置自定义ID

  24. 24

    通过新数组映射然后将项目推送到现有数组中的对象

  25. 25

    仅将某些项目从对象数组推送到新数组数组

  26. 26

    如何使用 Class 语法将新的 Book 对象推送到空数组中?

  27. 27

    使用PHP将对象推送到嵌套JSON?

  28. 28

    如何推送到嵌套在对象中的数组?

  29. 29

    JSON推送到JavaScript中的嵌套JSON对象

热门标签

归档