React遍历tree结构

1.遍历原来的树结构,获取其中的属性值,返回新的树结构

  /**
     * 递归遍历树结构
     *
     * @param item -
     * @param index -
     * @returns {*}
     */
    mapTree(item, index) {
      if (!item.node) {
        return {
          id: index,
          children: [],
        };
      }
      const haveChildren = Array.isArray(item.children) && item.children.length > 0;
      return {
        id: item.node.id,
        text: item.node.label,
        // 判断它是否存在子集,若果存在就进行再次进行遍历操作,直到不存在子集便对其他的元素进行操作
        children: haveChildren ? item.children.map(i => this.mapTree(i, index)) : [],
      };
    }



    treeModel.map((item, index) => {
       return this.mapTree(item, index);
    });

 2.遍历树结构,获取某个属性值

/**
     * 获取 tree 中所有的id
     *
     * @param arr 树结构数据
     * @returns {Array} 返回id数组
     */
    getIds = arr => {
      const result = [];
      const queue = [...arr];
      while (queue.length) {
        const item = queue.shift();
        if (item.data) {
          result.push(item.data.id);
        }
        queue.push(...(item.children || []));
      }
      return result;
    };

3.遍历tree结果数据,获取所有的节点

private static List<PropertyNode> getNodes(List<PropertyTreeModel> treeModel) {
	List<PropertyNode> result = new ArrayList<>();
	ArrayDeque<PropertyTreeModel> queue = new ArrayDeque<>(treeModel);
	while (queue.size() > 0) {
		PropertyTreeModel item = queue.poll();
		if (item.getNode() != null) {
			result.add(item.getNode());
		}
		List<PropertyTreeModel> children = item.getChildren();
		if (children != null && !children.isEmpty()) {
			for (int i = children.size() - 1; i >= 0; i--) {
				queue.push(children.get(i));
			}
		}
	}
	return result;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
React可以使用htmlparser来解析HTML字符串,并将其转换为React组件。HTMLParser是一个开源的HTML解析库,它可以将HTML字符串解析成一个DOM树,在React中可以使用这个DOM树来生成React组件。 使用htmlparser需要先安装htmlparser库,可以使用npm或yarn来安装。安装完成后,可以在React组件中引入htmlparser库。 在React组件中,可以调用htmlparser库提供的方法来解析HTML字符串。比如使用htmlparser.parseDOM()方法可以将HTML字符串解析成一个DOM树。解析完成后,可以通过遍DOM树的方式来构建React组件。 具体的使用步骤如下: 1. 引入htmlparser库: ``` import { parseDOM } from 'htmlparser2' ``` 2. 在React组件中,使用htmlparser解析HTML字符串: ``` const htmlStr = '<div><h1>Hello, World!</h1></div>' const domTree = parseDOM(htmlStr) ``` 3. 遍DOM树,构建React组件: ``` function convertToReactComponent(domTree) { return domTree.map((node, index) => { const props = node.attribs || {} const children = node.children ? convertToReactComponent(node.children) : null return React.createElement(node.name, { key: index, ...props }, children) }) } const reactComponent = convertToReactComponent(domTree) ``` 在上面的例子中,我们将HTML字符串 `<div><h1>Hello, World!</h1></div>` 解析成一个DOM树,然后通过遍DOM树的方式构建React组件。 总结来说,React可以使用htmlparser来解析HTML字符串,并通过遍DOM树的方式来构建React组件。这样可以方便地将现有的HTML结构转换为React组件,并进行进一步的扩展和操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值