使用splice从数组中删除对象

ada*_*dam 2 javascript angularjs

我知道有很多例子回答我的问题,但我仍然有问题要做:

这是我的数据:

$scope.data = [
    {
      users:[
        {name: 'Stephen', age: 50, dev: 'js', car: 'red', shoes:'green', happy:true, videoGame:[{isPlayer:true, console:'PS3'}]},
        {name: 'Stephen', age: 28, dev: 'angular', car: 'gold', shoes:'silver', happy:true, videoGame:[{isPlayer:false, console:'none'}]},
        {name: 'Adam', age: 43, dev: 'php', car: 'blue', shoes:'yellow', happy:true, videoGame:[{isPlayer:true, console:'XBOX'}]},
        {name: 'John', age: 27, dev: 'java', car: 'green', shoes:'black', happy:true, videoGame:[{isPlayer:true, console:'PC'}]},
        {name: 'Steve', age: 29, dev: 'ruby', car: 'white', shoes:'blue', happy:true, videoGame:[{isPlayer:false, console:'none'}]},
        {name: 'Pablo', age: 34, dev: 'java', car: 'pink', shoes:'red', happy:false, videoGame:[{isPlayer:true, console:'GAMEBOY'}]}
      ],
      futureUsers:[
        {name: 'Walter', age: 56, dev: 'js', car: 'red', shoes:'green', happy:true},
        {name: 'Jessi', age: 27, dev: 'angular', car: 'gold', shoes:'silver', happy:true},
        {name: 'Arnold', age: 34, dev: 'php', car: 'blue', shoes:'yellow', happy:true},
        {name: 'Bill', age: 67, dev: 'java', car: 'green', shoes:'black', happy:true},
        {name: 'Josh', age: 21, dev: 'ruby', car: 'white', shoes:'blue', happy:true},
        {name: 'Sam', age: 31, dev: 'java', car: 'pink', shoes:'red', happy:false}
      ]
    }
      ];
Run Code Online (Sandbox Code Playgroud)

我想在用户中删除拥有属性videoGameisplayer属性设置为false的用户

这是我正在尝试的:

  $scope.removeNotPlayer = function(){
      for(var i=0; i<$scope.data.users.length; i++){
        if($scope.data[i].users.videoGame === false){
            $scope.data.splice(i, 1);
        }
      }
      return $scope.data;
  };
Run Code Online (Sandbox Code Playgroud)

这里是一个关于plunker的链接:http://plnkr.co/edit/u4f8Vnds91zu8MNttHr0?p =preview

任何帮助都会很友好,我是初学者请原谅我的问题.

Mik*_*ant 6

也许Array.filter()方法就是你要找的.

$scope.data[0].users = $scope.data[0].users.filter(function(val) {
    return (val.videoGame[0].isPlayer === true);
});
Run Code Online (Sandbox Code Playgroud)