我试图检查对象数组中是否存在某些数据,但遗憾的是我无法执行以下操作:
这是我控制器中的数据:
$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'}
]
}];
如果属性 videoGame 存在,我试图检入 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的链接: http://plnkr.co/edit/G0C2l7Ko9kffnemtJiew?p=preview
答案 0 :(得分:3)
我已经修好了。在plunker中尝试。
我在您的代码中发现了一些错误。用于更新 futureUsers 的函数 checkData 不正确(您没有通过对象在forEach函数中对其进行迭代,并且您之后使用了 return 每次迭代)。
$scope.checkData = function(futureUsers){
angular.forEach(futureUsers, function(futureUser){
if(!futureUser.hasOwnProperty('videoGame')){
futureUser.videoGame= {isPlayer: 'true', console:'none'}
}
})
};
Check documentation about forEach loop
我认为你的 $ scope.data 变量必须是一个对象,而不是数组。因此,表格标签中的ng-repeat指令是不必要的。