JS递归实现遍历不规则多维数组的方法

var data= {
    a: { one: 1, two: 2, three: {four:'2',five:'4'} },
    b: { six: 4, seven: 5, eight: 6 },
    c: { nine: 7, ten: 8}
}
function traverse(obj) {
    for (var a in obj) {
      if (typeof(obj[a]) == "object") {
        traverse(obj[a]); //递归遍历
      } else {
        console.log(a + "=" + obj[a]); //如果是值就显示
      }
    }
}
traverse(data)

JS使用递归删除children中长度为空的数组

IterationDelateMenuChildren = (arr) => {
  if (arr.length) {
    for (let i in arr) {
      if (arr[i].children.length) {
        this.IterationDelateMenuChildren(arr[i].children)
      } else {
        delete arr[i].children;
      }
    }
  }
  return arr
}

vue使用递归删除children中长度为空的数组

// 去除为children空数组
traverse(arr) {
    if(arr.length){
        arr.forEach(item => {
            if (item.children.length) {
                this.traverse(item.children); //递归遍历
            } else {
                delete item.children;//如果是值就显示
            }                    
        });
    }
    return arr
},
//模型类别列表
findType(){
    var vm = this;
    request.get("http://192.168.2.177:8080/type/typeParent")
    .then(function(response) {
    if (response.data.code == 200) {
        vm.modeType=vm.traverse(response.data.data)
        console.log( vm.modeType,"vm.traverse(response.data.data)")
    }
    })
    .catch(function(error) {
        console.log(error);
    });
},
traverse(arr,num) {
    if(arr.length){
        arr.forEach(item => {
            if(item.label.id==num){
                    idArr.push(item.label.id)
                    idArrBox=idArr
            }
            Vue.set(item,"name",item.label.name)
            Vue.set(item,"id",item.label.id)
            if (item.children.length) {
                idArr.push(item.label.id)
                this.traverse(item.children,num); //递归遍历
            } else {
                idArr=[]
                delete item.children;//如果是值就显示
            }                    
        });
    }
    return arr
},
this.traverse(this.typeChoose,scope.number)
// 模型选择器赋值 去除为children空数组 
traverse(arr,value) {
    if(arr.length){
        arr.forEach(item => {
            Vue.set(item,"name",item.label.name)
            Vue.set(item,"id",item.label.id)
            if (item.hasOwnProperty("children")&&item.children.length) {
                idArr.push(item.label.id)
                this.traverse(item.children,value);
            } else {
                if(idArr.length!=0){
                    idArrBox=[...idArr]
                }
                idArr=[]
                if(!library.isNull(item.label.modelStorageId)){
                    if(item.label.modelJsonList[0].guid===value){
                        idArrBox.push(item.label.id)
                        this.modelArr.push(idArrBox)
                        return
                    }
                }
                //禁用模型类别
                if(!item.label.modelStorageId){
                    Vue.set(item,"disabled",true)
                }
                delete item.children;
            }  
        });
    }
    return arr
},

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值