首页 新闻 会员 周边 捐助

js如何查找对象中某个value路径上的key?

0
悬赏园豆:5 [已解决问题] 解决于 2019-03-17 14:33
let obj = {
                key1: 'str1',
                key2: {
                    key3: 'str3'
                },
                key4: {
                    key5: {
                        key6: 'str6',
                        key7: 'str7'
                    },
                    key8: 'str8'
                },
                key9: 'str9'
            };

有这样一个对象,要求封装一个函数,传入对象和某个 value,返回该 value 路径上的 key。比如:searchKeys(obj, 'str3'),得到 'key3, key2'。这是前几天面试时遇到的题,求高手解答

zanetti的主页 zanetti | 初学一级 | 园豆:128
提问于:2019-03-16 22:13
< >
分享
最佳答案
0

function getKey (obj,value){
for( let key in obj){
if( obj[key] == value ){
return key
}else if ( typeof obj[key] == “object”){
return getKey(obj[key],value)
}
}
应该是这样吧,递归遍历,手机上敲的,没有测试,你自己测一下吧,有问题再回复我。
}

收获园豆:5
1178690833 | 菜鸟二级 |园豆:209 | 2019-03-17 00:00

这样写进行测试 console.log(getKey(obj, 'str7')); 会返回 undefined,没有考虑 obj[key] 是其它字符串的情况。我已经知道怎么写了,还是很感谢你的回答~

zanetti | 园豆:128 (初学一级) | 2019-03-17 14:29
其他回答(1)
0
function searchKeys(obj, value){
                for(let key in obj){
                    if(obj[key] === value){
                        //找到了 value
                        return key;
                    }else{
                        //不是要找的 value
                        if(typeof obj[key] === 'object'){
                            //该值为对象
                            let temp = searchKeys(obj[key], value);

                            if(temp){
                                //temp 不是 undefined,找到了 value
                                return `${temp}, ${key}`;
                            }
                        }
                    }
                };
            };
zanetti | 园豆:128 (初学一级) | 2019-03-17 14:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册