Javascript 使用key在对象中查找特定值,但我不使用';我不知道路

Javascript 使用key在对象中查找特定值,但我不使用';我不知道路,javascript,Javascript,我有一个这样的物体: 那只是举个例子 {a:"aaaa", b:{ b1:"1b1b1b", b2:"2bb22b", b3:{ mykey:"value to find", some:"same", }, }, } 我知道钥匙“我的钥匙”,但我不知道它在哪里,我不知道路径。。。 我不能用这样的方式来寻找价值 myObj.a.b.maykey 因为我不知道钥匙在哪里“我的钥匙” 我只知道我的物品里有这把

我有一个这样的物体: 那只是举个例子

{a:"aaaa", 
 b:{ 
    b1:"1b1b1b", 
    b2:"2bb22b",
    b3:{
        mykey:"value to find",
        some:"same",
        },
    },
 }
我知道钥匙“我的钥匙”,但我不知道它在哪里,我不知道路径。。。 我不能用这样的方式来寻找价值

myObj.a.b.maykey
因为我不知道钥匙在哪里“我的钥匙” 我只知道我的物品里有这把钥匙

我必须找到“要找到的价值”, 如何找到myKey的值


谢谢

假设您知道键是
myKey
,并且正在对象图中的某个位置查找它,一个选项是使用深度优先遍历递归函数(类似于DOM用于
查询选择器
)。这比名称所暗示的要简单得多。:-)见评论:

函数findFirstValue(数据、键){
//断言:数据是一个对象
//循环遍历对象的属性
for(对象项(数据)的常量[名称,值]){
//找到钥匙了吗?
如果(名称===键){
//返回值
返回值;
}
//如果值是对象,则递归
如果(值的类型==“对象”){
const found=findFirstValue(值,键);
如果(找到!==未定义){
//在递归过程中发现
发现退货;
}
}
}
//找不到
return undefined;//Explicit,但实际上无论如何都会发生这种情况
}
const found=findFirstValue({
答:“aaaa”,
b:{
b1:“1b1b1b”,
b2:“2bb22b”,
b3:{
mykey:“值”,
有些人:“一样”,
},
},
}“我的钥匙”);

console.log(找到)可以通过递归来实现

让obj={a:“aaaa”,
b:{
b1:“1b1b1b”,
b2:“2bb22b”,
b3:{
mykey:“值”,
有些人:“一样”,
},
},
}
函数查找(obj、givenKey){
用于(输入obj){
//检查键的值是否为object
如果(对象的类型[键]=“对象”){
//在那个物体里面找到“吉文基”
让keyValue=find(obj[key],givenKey)
//如果在该对象中找到“givenKey”
如果(键值){
//返回该键的值
返回键值
}
}
//如果键的值不是对象
否则{
//如果key与给定key匹配,则返回key的值
如果(键===givenKey)返回obj[key]
}
}
}

console.log(find(obj,'mykey'))
你知道键或键的值吗?对不起,我不知道“…我只知道o在我的对象的同一个位置上…”是什么意思。我对答案感到抱歉。我可以看出我的问题表述错误……我需要的是通过键在对象中找到一个值。。。。但是我不能使用像“myObj.a.b.maykey”这样的路径,因为我不知道对象,我只知道我使用myKey作为键来查找值。我有一个错误:“find”的意外使用没有限制-globals@MatteoAngelotti在代码片段中运行良好。