Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不知道属性在树中的位置的情况下查找属性_Javascript - Fatal编程技术网

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()
满足您的条件……但我又添加了两个解决方案,这一次是递归的;一个用于搜索属性的第一次出现,另一个用于搜索属性的最后一次出现。