Проверьте, присутствует ли значение в области

0

У меня есть область, называемая $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"}]
  • 0
    Если у вас есть массив activities внутри вашей scope , вы должны исправить условие if с помощью: if ($scope.activities.indexIf("uncheck") == -1) {...} . Возможно, это исправит ваш код :)
Теги:

2 ответа

2
Лучший ответ

Вы должны зацикливать каждый объект и проверить свойство - вы можете использовать Array.some

var hasValue = activities.some(function(obj) { return obj.viewed == "unchecked" });
1

Вы должны пересечь каждый объект в массиве и протестировать, если свойство "просмотрено" равно "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));
  • 0
    Спасибо Ален, это сработало лучше для меня!
  • 0
    Кажется, в коде есть ошибка. Кажется, что код смотрит на последний пункт. var activities = [{"id":2, "viewed":"check"}, {"id":3, "viewed":"uncheck"}]; это возвращает истину. И это var activities = [{"id":2, "viewed":"uncheck"}, {"id":3, "viewed":"check"}]; возвращает ложь Пока массив имеет одинаковое содержимое.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню