Javascript 角度:检查数据中是否存在属性

Javascript 角度:检查数据中是否存在属性,javascript,arrays,angularjs,Javascript,Arrays,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, d

我试图检查对象数组中是否存在某些数据,但不幸的是,我无法执行以下操作:

以下是我控制器中的数据:

$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'}
      ]
    }];
我正在尝试签入futureUsers是否存在视频游戏的属性。如果没有,我将尝试为每个用户添加它,就像它在用户中出现一样,如下所示:

$scope.checkData = function(dataTocheck){
      angular.forEach(dataTocheck, function(){
        if(!dataTocheck.hasOwnProperty('videoGame')){
          var newProperty = {videoGame:{isPlayer: 'true', console:'none'}};
          $scope.dataTocheck.push(newProperty)
          return $scope.dataTocheck;
        }
      })
    };

    $scope.checkData($scope.data.futureUsers);
这里有一个指向plunkr的链接: 我已经修好了。试试看

我在你的代码中发现了一些错误。您用于更新futureUsers的函数checkData不正确(您没有在forEach函数中传递对象对其进行迭代,并且在每次迭代后都使用了return


我认为$scope.data变量必须是一个对象,而不是数组。因此,不需要在表的标记中重复ng指令。

问题/错误是什么?它与AngularJS有什么共同点?这只是阵列上的迭代问题是我不知道这个checkData函数是否工作。。。可能不是因为player和console的值没有显示在表中,我看到的一个错误是无法读取的属性“push”undefined@KrzysztofSafjanowski,也许在angularjs中有一种方法可以做到这一点为什么要否决这个问题?@tarboosh这是常见的JavaScript问题,你应该首先学习JS而不是AngularJSI想知道我的数据是否实际上是一个对象数组,它是否以你修复它的方式改变了某些东西?是的,如果你愿意的话。您可以将函数$scope.checkData更改为我的版本,并将其命名为$scope.checkData($scope.data[0].futureUsers);在控制器的末尾。因为您的$scope.data是一个数组,它只包含一个具有users和futureUsers属性的对象。真是太完美了,如果可以的话,我将再次投票支持您之前的答案;)
$scope.checkData = function(futureUsers){
  angular.forEach(futureUsers, function(futureUser){
    if(!futureUser.hasOwnProperty('videoGame')){
      futureUser.videoGame= {isPlayer: 'true', console:'none'}
    }
  })
};