关于javascript:递归-js递归改所有node里面属性名字

1.递归拿出不是叶子结点的id数组

getPriv(this.roleId).then((response) => {
             const privData = this.privData
             var a = []
             var forfn = function (list) {
               for (var i = 0; i < list.length; i++) {
                 if (list[i].children) {
                   a.push(list[i].id)
                   forfn(list[i].children)
                 }
               }
             }
             forfn(privData)
            //比对a和b this.privIds为在b数组中去除a数组蕴含的元素后造成的数组
             var b = response.data
             let RemoveSame = [...new Set([...a, ...b])]
             let SamePart = a.filter((item) => b.includes(item))
             let Difference = RemoveSame.filter(
               (item) => !SamePart.includes(item)
             )
             this.privIds = Difference
             // this.$refs.menu.setCheckedNodes(response.data)
           })

2.递归改所有node外面属性名字

getTree().then((response) => {
      this.menuOptions = []
      //data为须要批改的tree,这里次要是为antd design 外面select标准数据

      const ass = (data) => {
        let item = []
        data.map((list, i) => {
          let newData = {}
          newData.title = list.label
          newData.id = list.id
          newData.parentId = list.parentId
          newData.children = list.children ? ass(children) : [] //如果还有子集,就再次调用本人
          item.push(newData)
        })
        return item
      }
      var rda = ass(response.data)

      this.menuOptions = rda
    })

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理