TreeData 数据查找

TreeData 数据查找

最近做需求的时候遇到了这样的一个需求,Tree组件数据支持查找,而且TreeData的数据层级是无限级的

整体图

开始想的事借助UI组件库(Ant-design-vue)中的Tree组件的相关方法直接实现,看了下api 发现没法实现,后来想通过手动构建节点树实现,这样就需要写递归组件,需要重新写编辑,删除逻辑(本人有点懒所以就没采取),最后还是在数据上动手。

先封装一个查询方法


// 获取配置。  Object.assign 从一个或多个源对象复制到目标对象
const getConfig = (config: Partial<TreeHelperConfig>) => Object.assign({
   }, DEFAULT_CONFIG, config);


// 查询方法 通过传入比较函数,找出符合规则的数据
export function filter<T = any>(
  tree: T[],
  func: (n: T) => boolean,
  // Partial 将 T 中的所有属性设为可选
  config: Partial<TreeHelperConfig> = {
   },
): T[] {
   
  // 获取配置
  config = getConfig(config);
  const children = config.children as string;

  function listFilter(list: T[]) {
   
    return list
      .map((node: any) => ({
    ...node }))
      .filter((node) => {
   
        // 递归调用 对含有children项  进行再次调用自身函数 listFilter
        node[children] = node[children] && listFilter(node[children]);
        // 执行传入的回调 func 进行过滤
        return func(node) || (node[children] && node[children].length);
      });
  }
  // 返回符合结果数据
  return listFilter(tree);
}

方法调用

    const fieldNames = {
    children: 'children', title: 'name', key: 'id' };
  
    treeData.value = filter(
        //原始数据
      originalTreeData, 
      //过滤函数
      (node) => {
   
        const result = node[titleField]?.includes(searchValue.value) ?? false;
        if (result) {
   
          expandedKeys.value.push(node[keyField]);
        }
        return result;
      },
      fieldNames,
    );

这就实现了,此种方法可以支持element、ant-design-vue、iview 等多种Ui框架

相关推荐

  1. 数据结构-二分查找

    2024-02-23 14:54:01       47 阅读
  2. 数据结构】分块查找

    2024-02-23 14:54:01       44 阅读
  3. 数据结构-查找

    2024-02-23 14:54:01       27 阅读
  4. 数据结构---查找

    2024-02-23 14:54:01       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-23 14:54:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-23 14:54:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-23 14:54:01       82 阅读
  4. Python语言-面向对象

    2024-02-23 14:54:01       91 阅读

热门阅读

  1. Python编程:从入门到实践(第二版)

    2024-02-23 14:54:01       43 阅读
  2. 如何用爬虫软件导出抖店商家的联系方式

    2024-02-23 14:54:01       87 阅读
  3. 在线最小公倍数计算器

    2024-02-23 14:54:01       50 阅读
  4. 前端大屏触摸签名实现

    2024-02-23 14:54:01       46 阅读
  5. 六、行列式基本知识

    2024-02-23 14:54:01       49 阅读
  6. logback日志回滚原理

    2024-02-23 14:54:01       35 阅读
  7. 【Logback】如何在项目中快速引入Logback日志?

    2024-02-23 14:54:01       49 阅读
  8. 浅谈redis之SDS

    2024-02-23 14:54:01       48 阅读