#javascript #typescript #ag-grid
Вопрос:
Я использую filter
метод для фильтрации массива следующим образом:
this.gridOptions.api.setRowData(
this.arrayToFilter.filter(obj => obj.status !== "Declined")
);
Приведенный выше код работает нормально, но когда я пытаюсь перебрать все поля столбцов таблицы, это не работает, вот мой код:
this.gridOptions.api.setRowData(this.arrayToFilter.filter(function(item) {
for(var i = 0; i < columns.length; i ) {
var temp = columns[i].headerName
if(item[temp] === 'Declined')
return false
return true
}
}));
Что я делаю не так в цикле?
Комментарии:
1. где находятся фигурные скобки условия if?
2. @M. HassanNasir в нем всего одна строка, поэтому ему не нужны фигурные скобки
3. Возвращает ли он ошибку? Или просто неправильно отфильтрованные значения? Можете ли вы показать свой результат?
4. @RyanGarde он не возвращает никаких ошибок, все значения таблицы отображаются как обычно, неправильная фильтрация
5. Чего вы пытаетесь достичь? В вашем первом коде вы сравниваете название столбца «статус», что хорошо, но во втором коде вы сравниваете все свои заголовки с «Отклонено», что меня смущает, так как есть заголовки, такие как Имя или Возраст (я не знаю, каковы именно ваши заголовки, я просто догадываюсь). Вы сравниваете другие заголовки, кроме статуса, не имеет смысла
Ответ №1:
В вашем коде есть логическая ошибка: как только имя заголовка первого столбца не будет «Отклонено», оно всегда будет возвращать значение true.
Поместите return true
блок за пределы цикла.
this.gridOptions.api.setRowData(this.arrayToFilter.filter(function(item) {
for(var i = 0; i < columns.length; i ) {
var temp = columns[i].headerName
if(item[temp] === 'Declined')
return false
}
return true
}));
Ответ №2:
Вместо этого используйте карту для итерации
this.gridOptions.api.setRowData(this.arrayToFilter.filter(function(item) {
let checkDeclined = true;
columns.map(column => {
let temp = columns[i].headerName
if(item[temp] === 'Declined')
checkDeclined = false
else
checkDeclined = true
})
return checkDeclined;
}));
Комментарии:
1. Попробую решение сейчас,
2. Этот код никогда не вернется
checkDeclined = false
3. @адига, почему? что не так в приведенном выше коде?
4. @mazin это установка
checkDeclined = true
, независимо от условий5. @адига, о да, я положил его внутрь, если-еще