js tree树结构 通过类型过滤数据 (递归循环)

13 阅读1分钟
 // 切换作战力量和通信力量
    tabSelect(nv) {
      this.resourceData = []
      if (nv == 1) {
        // 假设原始数据为 resourceData  
        this.filterTreeData(this.filteredTreeData, '作战力量', this.resourceData);
      } else {
        this.filterTreeData(this.filteredTreeData, '通信力量', this.resourceData);
      }
    },
}
``` filterTreeData(data, criteria, filteredTreeData) {
      data.forEach((node, index) => {
        if (node.atttibuteValue !== '') {
          if (JSON.parse(node.atttibuteValue).some(obj => obj.typeValue === criteria)) {
            // filteredTreeData[index] = node;
            this.$set(filteredTreeData, index, node)
          }
          if (!JSON.parse(node.atttibuteValue).some(obj => obj.label === '力量类型')) {
            let cnsdj = {
              atttibuteValue: node.atttibuteValue,
              children: [],
              nodeId: node.nodeId,
              nodeName: node.nodeName,
              parentId: node.parentId,
              templetId: node.templetId
            }
            this.$set(filteredTreeData, index, cnsdj)
            if (node.children) {
              this.filterTreeData(node.children, criteria, filteredTreeData[index].children)
            }
          }
        }
      })
    },