javascript - 干燥过滤?

标签 javascript

list = list.filter(({ field1, field2, field3, field4, field5, field6, field7}) => {
        let found = false;

        if (field1.includes(this.state.filterString) ||
        field2.includes(this.state.filterString) ||
        field3.includes(this.state.filterString) ||
        field4.includes(this.state.filterString) ||
        field5.includes(this.state.filterString) ||
        field6.includes(this.state.filterString) ||
        field7.includes(this.state.filterString) ||
        ) {
          found = true;
        }
        return found
      });

上面的代码看起来很重复,我想知道是否可以使其更简洁或者不违反 DRY 原则?

最佳答案

使用属性数组后跟一个 .some 测试:

const itemProperties = ['field1', 'field2', 'field3', 'field4', 'field5', 'field6', 'field7'];
const { filterString } = this.state;
const filteredList = list.filter(
  item => itemProperties.some(prop => item[prop].includes(filterString))
);

关于javascript - 干燥过滤?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53908758/

相关文章:

JavaScript IF 条件出现意外结果

Javascript/AJAX、PHP 和 MySQL 结账

javascript - 页面转换时反转动画

javascript - "Firebase is not defined"错误

Javascript 数组在控制台中显示 2 个值,访问时仅显示 1 个

javascript - AngularJS 确认密码验证

javascript - "hidden"JavaScript HTTP 请求的最佳实践?

javascript - Mongo 查询如果字段不存在。如果存在,则必须在一个范围内

java - 如何使用 Jquery、AJAX 和 Servlet 获得实时搜索功能?

javascript - 为什么if语句在这个else if下面执行呢?