如何在Angular中删除JSON对象内的对象?

时间:2015-07-30 09:18:59

标签: javascript angularjs

我的问题是这样的。我下面有一个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]。感谢

4 个答案:

答案 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或下划线,则会更容易。