递归获取复杂对象的所有键key

199 阅读1分钟

突发奇想想练练递归(很能锻炼逻辑思维),虽然好像实际应用不会要求取对象所有的key

const TARGET = {
    a: {
        b: {
            c: 1
        },
        e: 4,
        f: 5,
        g: 6
    },
    wo:{
        xixi:233
    }
}
// 获得的key数组
const arr = []
let arr1 = []
// 通过递归获取对象所有key
function queryKey(obj){
    for(let key in obj){
        arr.push(key)
        // 判断子节点是否为对象,是的话则递归,最后为键值对而不是对象则跳出
         if(obj[key] instanceof Object){
             queryKey(obj[key])
         }
    }    
}
function queryKey1(obj){
    arr1 = [...arr1,...Object.keys(obj)]
    for(let key in obj){
        // 判断子节点是否为对象,是的话则递归,最后为键值对而不是对象则跳出
         if(obj[key] instanceof Object){
             queryKey1(obj[key])
         }
    }    
}
queryKey(TARGET)
queryKey1(TARGET)
console.log(arr);
console.log(arr1);

打印结果:

image.png