【问题标题】:javascript/json how to remove an object from nested json array which got generated dynamicallyjavascript/json 如何从动态生成的嵌套 json 数组中删除对象
【发布时间】:2019-05-07 10:12:26
【问题描述】:

我面临一个小问题,即从嵌套的 json 数组中删除一个对象,该数组将动态生成。下面是json..

其实我的需求是,我有一个 JSON 树,用户可以添加或删除多个节点..

[{
"mainTxt": "test",
"subTxt": "SubTxt1",
"nodes": [{
    "mainTxt": "test",
    "subTxt": "SubTxt2",
    "nodes": [{
        "mainTxt": "test",
        "subTxt": "test Operations",
        "nodes": [{
            "mainTxt": "test",
            "subTxt": "test Operations",
            "nodes": [{
                "mainTxt": "test",
                "subTxt": "test Operations"
            }]
        }]
    }]
}, {
    "mainTxt": "test",
    "subTxt": "SubTxt3",
    "nodes": [{
        "mainTxt": "test",
        "subTxt": "test Operations",
        "nodes": [{
            "mainTxt": "test",
            "subTxt": "test Operations"
        }]
    }]
}, {
    "mainTxt": "test",
    "subTxt": "india"
}, {
    "mainTxt": "test",
    "subTxt": "SubTxt4"
}, {
    "mainTxt": "test",
    "subTxt": "SubTxt5"
}]

}]

下面的代码块可能会被动态添加或删除

    "nodes": [{
                "mainTxt": "test",
                "subTxt": "test Operations"
            }]
and
{
        "mainTxt": "test",
        "subTxt": "SubTxt5"
    }

如何删除上面动态添加的块,再次删除后我需要形成相同的 JSON 数组。

我尝试了多种方法来编写循环,方法是在数组中查找该特定对象的索引,并尝试使用 splice() 和 delete() 方法删除。但它没有正常工作。

实际上我不想根据值删除对象,我想根据索引删除(如果我们添加或删除它可能会改变)。大多数解决方案都是基于价值提供的。 如果有任何简单的解决方法,有人可以帮助我吗?

提前谢谢你..

【问题讨论】:

    标签: javascript arrays json


    【解决方案1】:

    您可以使用(删除deeperattribute)删除 JSON 属性:

    delete myjson.attribute.deeperattribute
    

    您可以通过分配 JSON 属性来添加它们:

    myjson.thirteen = 12;
    

    我不确定我是否理解你的问题,但我希望这至少能帮助你。

    【讨论】:

    • 我不确定..它会有什么帮助。我只想删除该特定 JSON 中的对象。
    • @user2644620 delete thatParticularJSON.object
    【解决方案2】:

    修复了以下代码的问题..

     removeTile:function(oEvt){
            this._deleteRecord(globalArray, selObject);
            _oModel.setData(oModelData);
    },
        _deleteRecord:function(items, record){
    if(items !== undefined){
    for(var i=0;i< items.length;i++){
    if(items[i]=== record){
                        items.splice(i,1);break;
    }else{
    
                        this._deleteRecord(items[i].nodes, record);
    }
    }
    }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-01
      • 1970-01-01
      • 2011-09-29
      • 2016-09-04
      • 2015-08-02
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多