// 递归:找到所有节点,并在每个节点上添加属性 recursionMethod(data); const recursionMethod = (array:any) => { let i; for (i in array) { let arr = array[i]; // 是否存在children,存在则添加一个value属性,并赋值id // 然后继续递归,查找arr.children下是否还有children if (arr.children) { arr["value"] = arr.id; recursionMethod(arr.children); } else { // 已经找到最后一个没有children的节点,直接添加属性,结束递归 arr["value"] = arr.id; } } } // 递归:寻找存在目标值的节点 searchValue(data, value); const searchValue = (array:any, target:any) => { // 判断array是否为null, undefined, 0, NaN, false, 空字符串 // 以及判断array长度是否大于0 if (array && array.length) { for (let item of source) { if (item.targetValue == target) { // 可以标记该节点存在目标值或执行某些操作 item.flag = true } else if (item.children && item.children.length){ // 继续查找目标值 searchValue(item.cchildren, target); } } } }
参考:https://www.cnblogs.com/qdkfyym/p/13254448.html
标签:arr,递归,JavaScript,value,item,array,children From: https://www.cnblogs.com/gamepen/p/17728489.html