过滤树形结构数组的方法

前天做项目时候,遇到一个方法,过滤树形数据,把符合条件的数据过滤出来,树形数据如下:

const objarr= [{
				"id": 1,
				"isshow": true,
				"children": [{
					"id": 2,
					"isshow": true,
					"children": [{
						"id": 100268,
						"isshow": false,
						"showname": "ccccc",
						"name": "ccccc",
						"level": 3,
						"half": false
					}, {
						"id": 6,
						"isshow": true,
						"showname": "纯纯粹粹",
						"name": "纯纯粹粹",
						"level": 3,
						"half": false
					}, {
						"id": 100500,
						"isshow": true,
						"showname": "666",
						"name": "666",
						"level": 3,
						"half": false
					}],
					"showname": "1.1猜猜猜等到",
					"name": "1.1猜猜猜等到",
					"level": 2,
					"half": true
				}],
				"showname": "嗯哼",
				"name": "1",
				"level": 1,
				"half": true
			}, {
				"id": 3,
				"isshow": true,
				"children": [{
					"id": 4,
					"isshow": true,
					"showname": "2.1",
					"name": "2.1",
					"level": 2,
					"half": false
				}, {
					"id": 5,
					"isshow": true,
					"showname": "纯纯粹粹纯纯粹粹",
					"name": "纯纯粹粹纯纯粹粹",
					"level": 2,
					"half": false
				}],
				"showname": "2",
				"name": "2",
				"level": 1,
				"half": false
			}, {
				"id": 100121,
				"isshow": true,
				"children": [{
					"id": 100122,
					"isshow": true,
					"showname": "vvv v",
					"name": "vvv v",
					"level": 2,
					"half": false
				}],
				"showname": "单位名称",
				"name": "单位名称",
				"level": 1,
				"half": false
			}]

过滤出属性isshow为true的数据,处理上面数据,处理方法如下

convert (arr) {
      const newArr = arr.filter(item => item.isshow)
      return newArr.map(item => {
        if (item.children) {
          item.children = this.convert(item.children)
        }
        return item
      })
    }
    const arr = convert(objarr)
	简单的方法就实现了
发布了243 篇原创文章 · 获赞 108 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/yilanyoumeng3/article/details/101150165