javascript - 在嵌套 json 对象中插入数据

标签 javascript underscore.js

我有一个以下格式的 json 对象数据。因为我需要在特定 id 之后插入一些新记录。

    [
       {
          "id":"1",
          "name":"one",
          "children":[
             {
                "id":"4",
                "name":"four",
                "children":[

                ]
             },
             {
                "id":"5",
                "name":"five",
                "children":[

                ]
             },
             {
                "id":"6",
                "name":"six",
                "children":[

                ]
             }
          ]
       }       
    ]

例如:我的 id 为 5,还有 new JSON 对象({"id":"new data","name":"new data","children":[]}) 。那么新数据应该插入到 id 5 之后。是否有任何可能的方法可以在某个特定 id 之后插入。

        [
       {
          "id":"1",
          "name":"one",
          "children":[
             {
                "id":"4",
                "name":"four",
                "children":[

                ]
             },
             {
                "id":"5",
                "name":"five",
                "children":[

                ]
             }, 
             {
                "id":"new data",
                "name":"new data",
                "children":[

                ]
             },
             {
                "id":"6",
                "name":"six",
                "children":[

                ]
             }
          ]
       }
    ]

最佳答案

这是一个使用 splice 的快速示例;) 只需传递目标数组、对象和 id,add 函数就会将新对象插入目标中的正确位置。

const data = [{
  "id":"1",
  "name":"one",
  "children":[
     {
        "id":"4",
        "name":"four",
        "children":[]
     },
     {
        "id":"5",
        "name":"five",
        "children":[]
     },
     {
        "id":"6",
        "name":"six",
        "children":[]
     }
  ]
}];

const object = {"id":"new data","name":"new data","children":[]};

const add = (object, toArray, afterId) => {
  const afterIndex = toArray.findIndex(item => item.id === afterId);
  toArray.splice(afterIndex + 1, 0, object);
};

add(object, data[0].children, '5');
console.log(data);

关于javascript - 在嵌套 json 对象中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51499520/

相关文章:

javascript - Appcelerator SQLite 替换或更新命令

javascript - 将 onclick 操作添加到 mathml

javascript - 根据条件从Javascript中的两个数组数组中获取一组数组

javascript - 在 underscore.js 中显示列表中的所有项目(使用 Parse.com)

javascript - 使 Highcharts.js 图表在移动和桌面上看起来不错

javascript - 在 javaScript 动态添加一些标签到我的 HTML 之后我的设计改变了,我该如何解决这个问题

javascript - 发布时出现错误的表单数据名称

javascript - 为什么下划线与其类型检查不一致?

javascript - 具有嵌套模型和自定义模板的主干表单

javascript - isNull() 的目的是什么?