0


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

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

组件数据结构

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

  1. data() {
  2. return {
  3. // 列表搜索条件
  4. cseAttributeData: {
  5. parcelCode: "",
  6. landType: "",
  7. isIndexesCover: "",
  8. toSellTaskState: "",
  9. manageState: "",
  10. signDownState: "",
  11. withdrawalWay: ""
  12. },
  13. filterTableData: [], // 原始数据
  14. tableData: [] // 过滤后的数据
  15. };
  16. }

方法一:逐个条件过滤

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

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

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

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

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

总结

两种方法各有优缺点:

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

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

注意事项

  • 确保查询条件不为空时才进行过滤。
  • 根据实际数据类型,可能需要对查询条件和数据进行类型转换,比如toLowerCase()
  • 考虑使用Vue的计算属性(computed)来自动更新表格数据,以提高性能。

本文转载自: https://blog.csdn.net/m0_54340021/article/details/139745625
版权归原作者 小金子J 所有, 如有侵权,请联系我们删除。

“前端实现列表多条件查询/搜索功能”的评论:

还没有评论