• 判断叶子节点


    //测试数据
    data = [{
                          nodeId: "1",
                          parentId: "0",
                          text: "法务部",
                          childList:[{
                              nodeId: "12",
                              parentId: "1",
                              text: "111",
                          },{
                              nodeId: "13",
                              parentId: "1",
                              text: "222",
                          }]
                       },{
                          nodeId: "2",
                          parentId: "0",
                          text: "法务部2",
                          childList:[{
                              nodeId: "22",
                              parentId: "2",
                              text: "111222",
                          },{
                              nodeId: "23",
                              parentId: "2",
                              text: "22222",
                          }]
                       }]
      






    //问题:点击一级节点不会返回节点信息,需修改(A)处


    function
    validateLeaf(data){ console.log(data,'1099') let value = data.value, dicData = data.column.dicData; //console.log(value,'val--->>>>>') //check(dicData,value) console.log(check(dicData,value),'nodexxx') function check(arr,value){ //debugger console.log(arr,'arrrr') var selectNode = null let result = arr.find(ele => { //debugger //if(check(ele,value)) console.log(ele,'eleeee') if(ele.childList){ console.log(value,'value---') if(check(ele.childList,value)) selectNode = check(ele.childList,value) return check(ele.childList,value) //(A) } console.log(ele.nodeId,value,'201999') if(ele.nodeId === value) { debugger selectNode = ele console.log(selectNode,'selectNode') } return ele.nodeId === value }) console.log(selectNode,'result111111') return selectNode } }   

    修改返回一级节点问题:

    function validateLeaf(data){
            return new Promise((resolve,reject)=>{
               console.log(data,'1099')
                let value = data.value,
                    dicData = data.column.dicData;
                //console.log(value,'val--->>>>>')
                //check(dicData,value)
                console.log(check(dicData,value),'nodexxx')
                let selectNode = check(dicData,value);
                if(selectNode.childList){
                    //alert('档案分类必须最小分类')
                    reject()
                }else{
                    resolve()
                }
            })
              
              function check(arr,value){
                 //debugger
                 var selectNode = null
                 let result = arr.find(ele => {
                      //debugger
                      //if(check(ele,value)) 
                      if(ele.childList){ 
                            if(check(ele.childList,value)){
                               selectNode = check(ele.childList,value)
                               return check(ele.childList,value)
                            } 
                      }
                      if(ele.nodeId === value) {
                         selectNode = ele
                      }
                      return ele.nodeId === value
                  })
                  return selectNode
              }
          }

    扁平化:

    var arr=[1,2,[3,4,[5,6,7]],9,[10,11]]
    
    // 1) 方法一  循环数组+递归调用
    function steamroller (arr){
      // 1.创建一个新数组,保存扁平后的数据
      var newArr=[];
      // 2.for循环原数组
      for(var i=0;i<arr.length;i++){
        if(Array.isArray(arr[i])){
          // 如果是数组,调用steamroller 将其扁平化
          // 然后在push 到newArr中
          newArr.push.apply(newArr,steamroller(arr[i]))
        }else {
          // 反之 不是数组,直接push进newArr
          newArr.push(arr[i])
          console.log(newArr,'AA')
        }
      }
      // 3.返回新的数组
      console.log(newArr,'BB')
      return newArr
    }
    console.log(steamroller(arr)) // [ 1, 2, 3, 4, 5, 6, 7, 9, 10, 11 ]

    执行顺序:

    [1] "AA"
    VM307:16 (2) [1, 2] "AA"
    VM307:16 [3] "AA"
    VM307:16 (2) [3, 4] "AA"
    VM307:16 [5] "AA"
    VM307:16 (2) [5, 6] "AA"
    VM307:16 (3) [5, 6, 7] "AA"
    VM307:20 (3) [5, 6, 7] "BB"
    VM307:20 (5) [3, 4, 5, 6, 7] "BB"
    VM307:16 (8) [1, 2, 3, 4, 5, 6, 7, 9] "AA"
    VM307:16 [10] "AA"
    VM307:16 (2) [10, 11] "AA"
    VM307:20 (2) [10, 11] "BB"
    VM307:20 (10) [1, 2, 3, 4, 5, 6, 7, 9, 10, 11] "BB"
    VM307:23 (10) [1, 2, 3, 4, 5, 6, 7, 9, 10, 11]
  • 相关阅读:
    BZOJ1880: [Sdoi2009]Elaxia的路线(最短路)
    「BZOJ1433」[ZJOI2009] 假期的宿舍(二分图,网络流)
    BZOJ 1061 [Noi2008]志愿者招募(费用流)
    [BZOJ2879][Noi2012]美食节(费用流)
    bzoj 1834 [ZJOI2010] network 网络扩容(费用流)
    BZOJ2668:[CQOI2012]交换棋子(费用流)
    bzoj1070【SCOI2007】修车(费用流)
    【BZOJ 1877】 [SDOI2009]晨跑(费用流)
    SQLite_Home
    GeoMesa-单机搭建
  • 原文地址:https://www.cnblogs.com/thing/p/11756951.html
Copyright © 2020-2023  润新知