我的问题是这样的。我下面有一个JSON对象。我想删除具有赋值的对象1.我已经遍历它并且最好的我似乎无法删除该特定对象。
0: Object
teller_id: 1
details: CASH
assignments: Array [2]
0: Object <---- Remove this Object and all the elements indside it
service_id: 1
status: 1
assignment: 1
1: Object
service_id: 1
status: 1
assignment: 2
1: Object
teller_id: 2
details: EMP
assignments: Array [2]
0: Object
service_id: 2
status: 3
assignment: 4
1: Object
service_id: 2
status: 4
assignment: 6
删除分配为1
的对象0: Object
teller_id: 1
details: CASH
assignments: Array [2]
1: Object
service_id: 1
status: 1
assignment: 2
1: Object
teller_id: 2
details: EMP
assignments: Array [2]
0: Object
service_id: 2
status: 3
assignment: 4
1: Object
service_id: 2
status: 4
assignment: 6
在其中删除赋值数组中找到的Object [0]。感谢
答案 0 :(得分:1)
这些都不需要Angular,因为它涉及纯JavaScript。
在每个对象中,assignments
是一个数组。虽然数组是一种对象形式,但它有自己的属性。有几种方法可以解决这个问题。
首先,如果您希望将其视为数组,那么:
myObject[0].assignments.splice(0,1); // remove first element from array
或:
myObject[0].assignments.shift(); // get first element from array
然而,这将在数组中向下移动赋值的索引。即,作业[1]将成为作业[0]。
如果您不想要更改索引,那么delete
就是您要找的内容:
delete myObject[0].assignments[0];
但是,这会导致数组的第一个元素具有值undefined
。
答案 1 :(得分:0)
让指向对象的变量名称为ar
:
delete ar[0].assignments[0];
我希望您在循环和查找元素时没有问题。
答案 2 :(得分:0)
您可以使用splice函数删除数组中的元素
var arr = [{name: 'Ram', assiignment: 1}, {name: 'Raju', assiignment: 2}];
arr.splice(0,1); // Here 0 is the index of element to be delete and 1 is how many elements to delete from that index we provided
你的数组之后会这样:
[{name: 'Raju', assiignment: 2}]
答案 3 :(得分:0)
angular.forEach(items, function (item) {
for(var i = item.assignments.length - 1; i >=0; i--) {
if (item.assignments[i].assignment === 1) {
item.assignments.splice(i, 1);
}
}
});
角度原生是有问题的。
如果您正在使用某些第三方库,例如lodash或下划线,则会更容易。