Javascript 在不知道属性在树中的位置的情况下查找属性
我有一个小问题:Javascript 在不知道属性在树中的位置的情况下查找属性,javascript,Javascript,我有一个小问题: p: { s: { name: 'demo' } }, x: { 'something': 'me' } } 在不知道名称在对象树中的确切位置的情况下,如何获取名称? 编辑:我如何找到“我”?您可以递归迭代: function findByKeyName(obj, keyName) { for (var key in obj) { if (key === keyName) { ret
p: {
s: {
name: 'demo'
}
},
x: {
'something': 'me'
}
}
在不知道名称在对象树中的确切位置的情况下,如何获取名称?
编辑:我如何找到“我”?您可以递归迭代:
function findByKeyName(obj, keyName) {
for (var key in obj) {
if (key === keyName) {
return obj[key];
} else {
if (typeof obj[key] === "object" && obj[key] !== null) {
return findByKeyName(obj[key], keyName);
}
}
}
}
findByKeyName(obj, "name") //returns "demo"
丑陋但真实
var getValue=(o,p)=>JSON.stringify(o).replace(新的RegExp('.*?'+p+'):“([^']*)。+”,“$1”),
obj={
p:{
s:{
名称:“演示”
}
}
};
document.write(getValue(obj,“name”);
这在许多级别上都是非常可怕的。@torazaburo我不得不同意……但它是有效的。如果属性的值为null
,这将失败,因为typeof
将返回对象,但随后obj[key]
将失败。@tymeJV-thnx效果很好,我实际上非常接近,但你可以边活着边学习:)但是如果目标键不在第一个对象键中,它进入第一个对象并结束搜索怎么办?obj={p:{s:{name:'demo'},x:{'something':'me'}如何获得“某物”?嗯……虽然我的原始解决方案涉及JSON.stringify()
满足您的条件……但我又添加了两个解决方案,这一次是递归的;一个用于搜索属性的第一次出现,另一个用于搜索属性的最后一次出现。