Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 附加动态变量后从json对象获取值_Javascript_Angularjs_Json - Fatal编程技术网

Javascript 附加动态变量后从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]),这显然不起作用 我有没有办法做到这一点。 我希望我的问题是清楚的,如果没有,请让我知道,我

如果我有以下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])
,这显然不起作用

我有没有办法做到这一点。
我希望我的问题是清楚的,如果没有,请让我知道,我将尝试重新调整。

您可以使用
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版本吗。。我的框架不支持上述语法。