Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.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
Object.keys应用于Javascript变量时如何工作?_Javascript - Fatal编程技术网

Object.keys应用于Javascript变量时如何工作?

Object.keys应用于Javascript变量时如何工作?,javascript,Javascript,我的应用程序中有如下代码: var msg = data.data.modelState[Object.keys(data.data.modelState)[0]]; 有人能解释一下这段代码的Object.keys部分在做什么,并告诉我data.datamodelState对象是什么样子的吗 目前我的理解是,此代码不起作用,但其周围的代码不起作用,因此我无法调试以找出原因。Object.keys()返回该对象的键数组。在代码中,您正在访问数组的第一个元素。i、 e.data.data.m

我的应用程序中有如下代码:

   var msg = data.data.modelState[Object.keys(data.data.modelState)[0]];
有人能解释一下这段代码的Object.keys部分在做什么,并告诉我data.datamodelState对象是什么样子的吗

目前我的理解是,此代码不起作用,但其周围的代码不起作用,因此我无法调试以找出原因。

Object.keys()
返回该对象的键数组。在代码中,您正在访问数组的第一个元素。i、 e.data.data.modelState的第一个键

此代码仅用于获取
data.data.modelState
的第一个键的值

例如

假设

 data.data.modelState={tmpkey:"Some Value"}
 var msg = data.data.modelState[Object.keys(data.data.modelState)[0]];
 console.log(Object.keys(data.data.modelState)[0]); //will Print ["tmpkey"]
 console.log(msg); //It will print "Some Value";
您可以使用[]访问对象的任意键;这里您正在访问第一个密钥

var msg = data.data.modelState[Object.keys(data.data.modelState)[0]];
这将成为

var msg = data.data.modelState[["tmpkey"][0]];
var msg = data.data.modelState["tmpkey"]; //Simply it will return value of tmpKey property.
它将成为

var msg = data.data.modelState[["tmpkey"][0]];
var msg = data.data.modelState["tmpkey"]; //Simply it will return value of tmpKey property.

发生这种情况是因为
modelState
没有数字键,但可能有一些以前不知道的字符串键。因此,modelState将包含多个具有字符串键的对象,可能还有一个字符串变量?@Anne,这里您只访问第一个键。Object.keys(data.data.modelState)[0]将仅返回第一个键。@Anne,只有当您不知道对象中的键时,此方法才有效。