Нокаут имеет вспомогательные функции, которые не описывались, но они существуют ж/в библиотеке, чтобы помочь с фильтрацией массивы.
Вот полный список всех вспомогательных методов для обработки массивов:
ko.utils.arrayFilter
ko.utils.arrayFirst
ko.utils.arrayForEach
ko.utils.arrayIndexOf
ko.utils.arrayMap
ko.utils.arrayPushAll
ko.utils.arrayRemoveItem
ko.utils.compareArrays
ko.utils.unwrapObservable
и Райан Нимейер написал хороший blog post о том, как использовать некоторые из них.
Метод 1
Вот краткий пример, чтобы получить ваши начал:
var newList = ko.utils.arrayFilter(list(), function(item) {
return item.price > 10;
});
Это создает newList
предметов, которые имеют цену более 10. Затем вы можете изменить текущий а именно:
list(newList);
Способ 2
Другой вариант - найти предметы, которые вы хотите удалить. Допустим, вы хотите, чтобы удалить все элементы с ценой более 10:
var rList = ko.utils.arrayFilter(list(), function(item) {
return item.price > 10;
});
Далее вы можете позвонить:
list.removeAll(rList);
Метод 3
И, как они говорят, что есть более чем один путь к метафорическому коже кошки:
list.remove(function(item) { return item.price > 10 });
У вас есть это.
и я уверен, что есть еще много способов сделать это. Если вам нужны более продвинутые способы фильтрации массивов, я бы рекомендовал посмотреть на underscore.js