/**
|
* 根据key值获取树状节点的对象
|
*
|
* @param {[String]} key 查询的值
|
* @param {[Array]} treeData 树状数据
|
* @param {[String]} nodeKey 对比的属性名,默认为id
|
* @param {[String]} childKey 子节点的属性名 默认为children
|
* @return {[Object]} 返回key所在的的对象 -1表示未获取到
|
*/
|
function getTreeDataByKey(key, treeData, nodeKey, childKey) {
|
let id = nodeKey?nodeKey:'id';
|
let child = childKey?childKey:'children';
|
// 检测数据不是数组(中断回调函数)
|
if(!(treeData instanceof Array)) {
|
return -1;
|
}
|
let result = -1;
|
// 遍历树状数据获取与可以对应的对象
|
for(let i=0; i<treeData.length; i++) {
|
let item = treeData[i];
|
if(item[id] == key) {
|
result = item;
|
break;
|
}else {
|
result = getTreeDataByKey(key, item[child], nodeKey, childKey);
|
if(result != -1) {
|
break;
|
}
|
}
|
}
|
|
return result;
|
}
|
|
export default getTreeDataByKey;
|