从JSON对象中删除元素

Sta*_*low 39 javascript jquery json

我有一个json数组,看起来像这样:

  {
    "id": 1,
    "children": [
    {
        "id": 2,
        "children": {
            "id": 3,
            "children": {
                "id": 4,
                "children": ""
            }
        }
    },
    {
        "id": 2,
        "children": {
            "id": 3,
            "children": {
                "id": 4,
                "children": ""
            }
        }
    },
    {
        "id": 2,
        "children": {
            "id": 3,
            "children": {
                "id": 4,
                "children": ""
            }
        }
    },
    {
        "id": 2,
        "children": {
            "id": 3,
            "children": {
                "id": 4,
                "children": ""
            }
        }
    },
    {
        "id": 2,
        "children": {
            "id": 3,
            "children": {
                "id": 4,
                "children": ""
            }
        }
    },
    {
        "id": 2,
        "children": {
            "id": 3,
            "children": {
                "id": 4,
                "children": ""
            }
        }
    },
    {
        "id": 2,
        "children": {
            "id": 3,
            "children": {
                "id": 4,
                "children": ""
            }
        }
    }]
}
Run Code Online (Sandbox Code Playgroud)

我想有一个函数删除"子"空的元素.我该怎么做?我不是要求答案,只是建议

Lek*_*eyn 57

要遍历对象的键,请使用for .. in循环:

for (var key in json_obj) {
    if (json_obj.hasOwnProperty(key)) {
        // do something with `key'
    }
}
Run Code Online (Sandbox Code Playgroud)

要测试空子项的所有元素,可以使用递归方法:遍历所有元素并递归测试它们的子项.

可以使用以下delete关键字删除对象的属性:

var someObj = {
    "one": 123,
    "two": 345
};
var key = "one";
delete someObj[key];
console.log(someObj); // prints { "two": 345 }
Run Code Online (Sandbox Code Playgroud)

文档:

  • +1 ...我已经用Javascript编写了多年,我甚至不知道[删除](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/delete)运营商存在?! (10认同)
  • 我认为他应该使用 splice() 方法而不是删除,因为孩子们保存在一个数组中? (3认同)
  • +1是清除删除不会从数组中删除数组元素而是将其替换为未定义的地方。delete 仅用于从对象中删除道具。 (3认同)