首页 > 解决方案 > 如何简化数组过滤器

问题描述

我想知道如何简化它以避免重复小写并包含每个属性的条件。

 items() {
  return this.table.filter.keyword
    ? this.dataArray.filter(
        item =>
          item.nombre.toLowerCase().includes(this.table.filter.keyword) ||
          item.paisOrigen
            .toLowerCase()
            .includes(this.table.filter.keyword) ||
          item.ciudad.toLowerCase().includes(this.table.filter.keyword) ||
          item.sector.toLowerCase().includes(this.table.filter.keyword) ||
          item.contratadorPor
            .toLowerCase()
            .includes(this.table.filter.keyword) ||
          item.moneda.toLowerCase().includes(this.table.filter.keyword)
      )
    : this.dataArray;
}

谢谢!

标签: javascriptarraysfunctionvue.jsarrow-functions

解决方案


您可以在应用过滤器之前使用 map 函数:

  1. 使用 map 将值转换为小写(您可以使用 for...in 循环来转换所有属性)
  2. 对地图的结果应用过滤器。
this.data.map(item => {
  let ret = {};
  for (let p in item) {
    ret[p] = item[p].toLowerCase();
  }
  return ret;
}).filter(item => {
  //... perform your filter logic here...
});

推荐阅读