我有一个存储在范围变量中的JSON对象,比如$ scope.items。
$scope.items =
[
{
"id":"1",
"class":"group",
"label":"ABC",
"child":[
{
"id":"2",
"label":"Reference number",
"value":"11AA"
},
{
"id":"3",
"label":"Received on",
"value":"3rd Oct"
}
]
},
{
"id":"4",
"class":"group",
"label":"XYZ",
"child":[
{
"id":"5",
"label":"Name",
"value":"John"
},
{
"id":"6",
"label":"Contact",
"value":"54545882"
}
]
}
]
我需要根据从后端收到的'id'删除JSON元素。现在,假设必须删除ID为6的属性。
delete $scope.items[1].child.splice(1,1); // THIS WORKS!
但是,我需要做这样的事情:
var temp = $scope.items[1].child.splice(1,1);
delete temp;
但是这不起作用,因为'temp'不存储要删除的JSON元素(带有id 6)的引用。
由于我在要动态删除的对象中获取JSON元素的路径,因此我需要存储引用并稍后执行删除操作。或者请建议我这样做的最佳替代方案。谢谢!
答案 0 :(得分:0)
由于您需要路径是动态的,因此将重要路径元素存储在如下变量中:
var itemNum = 1;
var childNum = 1;
您的代码可以使用任何必要的逻辑动态设置这些变量。然后在您需要删除的代码中,执行以下操作:
$scope.items[itemNum].child.splice(items, 1);
这里你不需要delete
命令。只需使用splice
即可从child[]
数组中删除该项目。
答案 1 :(得分:0)
首先,这是一个对象数组,而不是JSON。
其次,Array.splice()
将从数组中删除一系列项目,并将这些项目作为新数组返回。当您将项目拼接出数组时,Angular应该识别范围更改并更新DOM,您不必delete
任何内容。
第三,temp
变量将包含已删除元素的返回列表,您可以对其进行索引或迭代。
var temp = $scope.items[1].child.splice(1,1);
console.log(temp[0]);
答案 2 :(得分:0)
您不能通过存储在变量中来删除(var temp = $ scope.items [1] .child.splice(1,1);)。因为' var'创建无法使用delete运算符删除的不可配置属性。