我有两个带有 JSON 文件的变量。第一个是键列表,如下所示:keylist = ["key1","key2","key3"]第二个是从数据库生成的,如下所示:data = { "key1"{ #further data }, "key2"{ #further data }, "key3"{ #further data }}现在我想使用来自数据库的密钥访问数据库的第二个元素 keylistdata.keylist[1];哪个不起作用,因为 keylist[1] 的返回是一个字符串?我做了一些研究,并提出了使用窗口函数的建议。所以我试过这个:window["data." + keylist[1]]();这会导致“不是函数”错误。我能做些什么来解决这个问题?
3 回答
![?](http://img1.sycdn.imooc.com/5458655200013d9802200220-100-100.jpg)
噜噜哒
TA贡献1784条经验 获得超7个赞
就如此容易:
const mydata = data[ keylist[1] ];
此外,您的代码从语法的角度来看是正确的,但它所讲述的内容与您预期的完全不同。
data.keylist[1];
告诉 JS 你希望有一个被调用的对象data
,它有一个被调用的属性keylist
并且它是(最有可能的)数组类型,并且你想要获取这个数组的第二个元素。
PS:还有一点。您的问题标题不完全正确,因为 JS 中的 Arrays 和 Object 之间的差异。
JS 中的数组没有“字符串键”,因此您不能“使用字符串键访问数组”。好吧,确实有,但不是数组项。数组项只有数字索引,您可以使用它来访问它。与数组相反,对象可能具有命名属性。因此,当您看到类似的内容时:data = myVar['data']
,您可以判断您正在处理一个对象,而data = someVar[0]
可以同时是一个数组(最有可能)或一个键名为“0”的对象。
![?](http://img1.sycdn.imooc.com/54584cd10001404b02200220-100-100.jpg)
30秒到达战场
TA贡献1828条经验 获得超6个赞
我认为您在第一个示例中遇到的问题不是因为它返回了一个键。我相信问题是因为data
没有名为keylist
. 与其这样,不如试试
data[keylist[1]]
看看这是否适合你。这个应该工作的原因是,在这种情况下,Javascript 将评估返回的字符串keylist[1]
,然后将其用作data
变量的字符串索引。让我知道这是否适合您:D
添加回答
举报
0/150
提交
取消