Как удалить элементы и массив по двум атрибутам в AngularJS?

0

У меня есть массив объектов в AngularJS, как это:

var example = [ {id:'1',
                 read: false,
                 folder: 'inbox'},
                {id:'2',
                 read: true,
                 folder: 'inbox'},
                {id:'3',
                 read: true,
                 folder: 'trash'},
                 {id:'4',
                 read: false,
                 folder: 'trash'}];

И мне нужно, чтобы удалить любой объект, который имеет атрибуты folder == 'trash' и read == true в то же время.

Поэтому я попытался сделать это с помощью lodash:

example = lodash.filter(example, function(value, index) {
    return (value.folder !== 'trash') && (value.read !== true);
});

Он должен удалить только элемент # 3, но он удаляет # 3 и # 4.

Очевидно, я не понимаю, как работает lodash.filter.

Кто-то может помочь?

Теги:

3 ответа

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

Неправильный логический оператор. установите условие в folder == 'trash' и read == true и отмените его.

example = lodash.filter(example, function(value) {
    return (value.folder == 'trash' && value.read == true) == false;
});
0

Оператор! == неверен. используйте == вместо этого.

  return (value.folder == 'trash' && value.read == 'true') == false;
0

Вам нужно удалить цитаты вокруг "true". Вы хотите сохранить все элементы, в которых папка не является "мусором", или свойство read не является true поэтому ваша логика будет выглядеть так:

return (value.folder !== 'trash') || (value.read !== true);

Ещё вопросы

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