首页 > 解决方案 > 过滤器方法内部的for循环无法按预期工作

问题描述

我正在使用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
    }
}));

我在循环中做错了什么?

标签: javascripttypescriptag-grid

解决方案


您的代码中存在逻辑错误:一旦第一列的 headerName 不是“已拒绝”,它将始终返回 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
}));

推荐阅读