判断叶子节点
//测试数据
data = [{
//问题:点击一级节点不会返回节点信息,需修改(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]