本文主要是介绍js查找树型数据下面符合条件的节点,函数方法(2024-05-25),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
遍历树型数据节点,查找符合条件的节点
/*** 遍历树数据节点,查找符合条件的节点* @param {Array|Object} data 数据树,如 {id:1, children:[{id:2}]}* @param {Boolean} isFindOne 是否只找最先符合条件的一个* @param {Function} fn 查找回调函数,回调参数:item 节点,index节点当前兄弟节点中的索引,data 查找的数据树,函数返回true表示符合条件* @param {string} [field=children] 子级字段名称* @returns {Array|Object} 查找结果,isFindOne为true时返回Object, false时返回Array*/traverse (data = [], isFindOne, fn, field = 'children') {let result = []data = Array.isArray(data) ? data : [data]for (let i = 0, len = data.length; i < len; i++) {const item = data[i]const checked = fn(item, i, data)const children = item[field]if (checked) {result.push(item)if (isFindOne) break}if (children) {const child = traverse(children, isFindOne, fn, field)if (child) result = result.concat(child)}}return isFindOne ? result[0] || null : result
}//执行
let id = '1-1'
let list = [{ id:'1',name:'1',children:[{id:'1-1',name:'1-1' }]},
{id:'2',name:'2'},
{id:'3',name:'3'}
]traverse(list, true, (item) => item.id === id)
这篇关于js查找树型数据下面符合条件的节点,函数方法(2024-05-25)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!