he wei
114 分钟以前 7102b09561443f8c66bdcbecafac1706afc113fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/**
 * 根据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;