树形结构的搜索

206 阅读1分钟

一个树形结构,比如第三级的value是1-1-3,其父级为1-1,再父级为1

此时搜索1-1-3,希望得到一个数组['1', '1-1', '1-1-3']

init(tree) {
  if (!tree.__value) {
    tree.__value = [];
  }
  if (!tree.__obj) {
    tree.__obj = [];
  }
  for (let i = 0; i < tree.length; i++) {
    tree[i].__value = [...tree.__value];
    tree[i].__value.push(tree[i].value);
    tree[i].__obj = [...tree.__obj];
    tree[i].__obj.push({
      value: tree[i].value,
      label: tree[i].label,
    });
    if (tree[i].children && tree[i].children.length) {
      tree[i].children.__value = [...tree[i].__value];
      tree[i].children.__obj = [...tree[i].__obj];
      this.init(tree[i].children);
    }
  }
},
fn(tree, value) {
  for (let i = 0; i < tree.length; i++) {
    if (tree[i].value === value) {
      console.log(tree[i].__value);// 输出三层value的数组
      console.log(tree[i].__obj);// 输出三层obj的数组
    }
    if (tree[i].children && tree[i].children.length) {
      this.fn(tree[i].children, value);
    }
  }
},