Javascript 如何从字符串中查找对象中的复杂对象(必须用点分隔)-角度-

Javascript 如何从字符串中查找对象中的复杂对象(必须用点分隔)-角度-,javascript,typescript,Javascript,Typescript,我希望你很好 我试图从一个字符串(这个字符串的内容是动态的)角度在一个对象中找到一个复杂的对象 例如: let variable = { "name":"Rick", "family": { "son":"Andy" } }; 当我尝试读取name属性时,我可以通过以下代码找到它: console.log(variable["name"]); console.log(variable["family"]); console.lo

我希望你很好

我试图从一个字符串(这个字符串的内容是动态的)角度在一个对象中找到一个复杂的对象

例如:

 let variable = {
      "name":"Rick",
      "family": {
        "son":"Andy"
      }
    };
当我尝试读取name属性时,我可以通过以下代码找到它:

console.log(variable["name"]);
console.log(variable["family"]);
console.log(variable["family.son"]);
当我尝试读取family属性时,我可以通过以下代码找到它:

console.log(variable["name"]);
console.log(variable["family"]);
console.log(variable["family.son"]);
但是,当我尝试读取子属性时,我尝试使用代码:

console.log(variable["name"]);
console.log(variable["family"]);
console.log(variable["family.son"]);
但是我得到了一个未定义的值,我发现我可以使用以下任意代码:

console.log(variable["family"]["son"]);
console.log(variable["family"].son);
但它对我不起作用,因为我需要从字符串中搜索属性(属性是动态的),有人知道如何解决这个问题吗

字符串包含属性路径,例如:“family.son”或“family”


问候。

试试这样:

const dotPathAccessor=(src,path)=>{
const parts=path.split('.');
返回零件.reduce((obj,prop)=>obj[prop],src);
}
常量变量={
“姓名”:“瑞克”,
“家庭”:{
“儿子”:“安迪”
}
};
log(dotPathAccessor(变量“family.son”);
//您可以使用代理对象使其更简单
//有了这个原型,您现在可以使用`object.getDotProxy'为任何对象获取点代理`
//并使用点路径访问它
Object.prototype.getDotProxy=()=>新代理(变量{
获取(对象、道具){
返回点路径访问器(obj、prop);
}
});
const dotProxy=变量.getDotProxy();

log(dotProxy[“family.son”])
作为分隔符拆分字符串,并使用循环逐个获取属性。@nullptr.t使用两个字符串没有任何错误,但是对于我的情况,我需要使用一个字符串,请帮助我阅读文章。