У меня есть область, называемая $scope.activities
. Внутри этой области есть несколько объектов. Каждый объект имеет строку, называемую viewed
со значением check
или uncheck
. Я хотел бы проверить, если значение uncheck
присутствует в объеме.
Я создал это, но он не работает.
if (activities.indexOf("uncheck") == -1) {
console.log ('uncheck found')
$scope.newActivities = 'newActivities';
} else {
console.log ('no uncheck found')
}
Потому что в activities
меня есть два объекта, один из которых имеет значение uncheck
, и объект без него.
[{"id":2,", "viewed":"check"}, {"id":3,", "viewed":"uncheck"}]
Вы должны зацикливать каждый объект и проверить свойство - вы можете использовать Array.some
var hasValue = activities.some(function(obj) { return obj.viewed == "unchecked" });
Вы должны пересечь каждый объект в массиве и протестировать, если свойство "просмотрено" равно "unchek"
var activities = [{"id":2, "viewed":"check"}, {"id":3, "viewed":"uncheck"}];
var activities2 = [{"id":2, "viewed":"check"}, {"id":3, "viewed":"check"}];
var check = function(data){
var checked = false;
for(var i in data){
if(data[i].hasOwnProperty("viewed") && (data[i]["viewed"]=="uncheck") ){
checked = true ;
}
}
return checked;
} ;
console.log(check(activities));
console.log(check(activities2));
var activities = [{"id":2, "viewed":"check"}, {"id":3, "viewed":"uncheck"}];
это возвращает истину. И это var activities = [{"id":2, "viewed":"uncheck"}, {"id":3, "viewed":"check"}];
возвращает ложь Пока массив имеет одинаковое содержимое.
activities
внутри вашейscope
, вы должны исправить условиеif
с помощью:if ($scope.activities.indexIf("uncheck") == -1) {...}
. Возможно, это исправит ваш код :)