Javascript 附加动态变量后从json对象获取值
如果我有以下JSON对象:Javascript 附加动态变量后从json对象获取值,javascript,angularjs,json,Javascript,Angularjs,Json,如果我有以下JSON对象: let jsonObject = {a: {b: "c"}}; 和如果x=“a”, 我知道我能行 console.log(jsonObject[x]) // which prints {b: "c"} 但如果我有x=“a.b” 我如何做console.log(jsonObject.a.b)//打印“c”的等价工作 我尝试了console.log(jsonObject[x]),这显然不起作用 我有没有办法做到这一点。 我希望我的问题是清楚的,如果没有,请让我知道,我
let jsonObject = {a: {b: "c"}};
和如果x=“a”,
我知道我能行
console.log(jsonObject[x]) // which prints {b: "c"}
但如果我有x=“a.b”
我如何做console.log(jsonObject.a.b)//打印“c”的等价工作代码>
我尝试了console.log(jsonObject[x])
,这显然不起作用
我有没有办法做到这一点。
我希望我的问题是清楚的,如果没有,请让我知道,我将尝试重新调整。您可以使用split(“.”
拆分属性访问器,它将为您提供两个属性数组。您可以使用它们访问该属性
还可以在此数组中循环以动态访问值
让jsonObject={a:{b:c};
var x=“a.b”;
var props=x.split(“.”);
var c=jsonObject[props[0]][props[1]];
控制台日志(c)
您可以通过
分割属性,然后使用reduce
函数迭代对象并逐个获取属性。在函数之后,您将获得返回值中的最后一个。你想要多深,你可以用它
constjsonobject={a:{b:'c'};
常数x='a.b';
常量属性=x.split('.');
const item=properties.reduce((obj,prop)=>obj[prop],jsonObject);
控制台日志(项目)代码>对于这个有限的需求,您可以使用reduce
var fnGet = ( obj, x ) => x.split( "." ).reduce( ( a, c ) => a[c] , obj );
然后调用它作为
try
{
console.log( fnGet( jsonObject, x ) );
}
catch(e)
{
console.error( "invalid property or object" );
}
您可以使用array.prototype.reduce
:
var-jsonObject={a:{b:c};
var x=“a.b”;
var val=x.split('..).reduce((m,o)=>m&m[o],jsonObject);
控制台日志(val)代码>与他的案例相关,他需要如何抓住它有人能给我上述代码的非es6版本吗。。我的框架不支持上述语法。