前端实现列表多条件查询/搜索功能

在前端开发中,实现一个多条件查询功能是常见的需求,尤其是在处理表格数据时。下面我将通过一个简单的Vue组件示例,来展示如何实现一个多条件查询功能。

组件数据结构

首先,定义组件的数据结构,包括查询条件和过滤后的表格数据:

data() {
  return {
    // 列表搜索条件
    cseAttributeData: {
      parcelCode: "",
      landType: "",
      isIndexesCover: "",
      toSellTaskState: "",
      manageState: "",
      signDownState: "",
      withdrawalWay: ""
    },
    filterTableData: [], // 原始数据
    tableData: [] // 过滤后的数据
  };
}

方法一:逐个条件过滤

此方法是通过遍历所有查询条件,然后对每个条件应用过滤函数。这种方法的好处是逻辑清晰,易于理解。

methods: {
  // 图层属性列表查询按钮
  cseAttributeDataSubmit() {
    let arr = this.filterTableData;
    // 通过遍历key值来循环处理
    Object.keys(this.cseAttributeData).forEach(key => {
      // 调用筛选方法
      arr = this.filterFunc(this.cseAttributeData[key], key, arr);
    });
    // 为表格赋值
    this.tableData = arr;
  },
  // 筛选方法
  filterFunc(val, target, filterArr) {
    // 参数不存在或为空时,返回全部数据
    if (!val) return filterArr;
    // 应用过滤条件
    return filterArr.filter(item => item[target] && item[target].indexOf(val) > -1);
  }
}

方法二:一次性过滤所有条件

此方法是一次性过滤所有条件,这种方法可以减少遍历次数,提高效率。

methods: {
  // 图层属性列表查询按钮
  cseAttributeDataSubmit() {
    this.tableData = this.filterTableData.filter(item => {
      // 遍历所有查询条件
      for (const [k, v] of Object.entries(this.cseAttributeData)) {
        if (v) { // 如果条件不为空
          if (!item[k] || !item[k].includes(v)) {
            return false; // 如果当前项不包含查询条件,则过滤掉
          }
        }
      }
      return true; // 如果所有条件都满足,则保留
    });
  }
}

总结

两种方法各有优缺点:

  • 方法一逻辑清晰,易于理解,但可能效率略低。
  • 方法二效率更高,但逻辑稍微复杂一些。

在选择实现方法时,可以根据实际项目需求和数据量大小来决定使用哪种方法。如果数据量不大,推荐使用方法一,因为它更易于维护和理解。如果数据量较大,或者需要更高效的查询,可以考虑使用方法二。

注意事项

  • 确保查询条件不为空时才进行过滤。
  • 根据实际数据类型,可能需要对查询条件和数据进行类型转换,比如toLowerCase()
  • 考虑使用Vue的计算属性(computed)来自动更新表格数据,以提高性能。
  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端js实现搜索查询可以通过以下几个步骤来实现: 1. 获取用户输入:首先使用HTML中的input元素创建一个输入框,通过JavaScript中的DOM操作获取用户在输入框中输入的内容。 2. 与数据源链接:将用户输入的内容与数据源进行链接,可以通过Ajax技术来异步加载数据。可以使用JavaScript中的XMLHttpRequest或fetch API来发送异步请求,获取服务器返回的数据。 3. 过滤和排序数据:根据用户输入的关键词对数据进行筛选和排序。可以使用JavaScript的数组方法(如filter、map、sort等)来处理数据,将符合条件的数据返回给用户。 4. 动态展示搜索结果:将过滤和排序后的数据动态展示给用户。可以使用JavaScript来操作DOM元素,例如创建和插入HTML元素来展示搜索结果。可以使用ul、li等标签来创建一个列表,将搜索结果逐条添加到列表中。 5. 实现搜索建议:可以根据用户输入的关键词提供一些搜索建议来辅助用户查找。可以通过Ajax请求获取相关数据,并根据用户输入的内容动态生成搜索建议列表。 6. 添加交互功能:可以对搜索结果和搜索建议列表添加交互功能,例如点击搜索结果中的某一项可以跳转到相应的页面,或者在搜索建议列表中选择某一项可以将其作为搜索关键词填充到搜索框中。 通过以上步骤,可以在前端使用JavaScript实现搜索查询功能,提升用户体验和网站的交互性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值