使用字符串键访问数组

我有两个带有 JSON 文件的变量。第一个是键列表,如下所示:


keylist = ["key1","key2","key3"]

第二个是从数据库生成的,如下所示:


data = {

    "key1"{

         #further data

    },

    "key2"{

        #further data 

    },

    "key3"{

        #further data

    }

}

现在我想使用来自数据库的密钥访问数据库的第二个元素 keylist


data.keylist[1];

哪个不起作用,因为 keylist[1] 的返回是一个字符串?我做了一些研究,并提出了使用窗口函数的建议。所以我试过这个:


window["data." + keylist[1]]();

这会导致“不是函数”错误。我能做些什么来解决这个问题?


精慕HU
浏览 136回答 3
3回答

噜噜哒

就如此容易:const mydata = data[ keylist[1] ];此外,您的代码从语法的角度来看是正确的,但它所讲述的内容与您预期的完全不同。data.keylist[1];告诉 JS 你希望有一个被调用的对象data,它有一个被调用的属性keylist并且它是(最有可能的)数组类型,并且你想要获取这个数组的第二个元素。PS:还有一点。您的问题标题不完全正确,因为 JS 中的 Arrays 和 Object 之间的差异。JS 中的数组没有“字符串键”,因此您不能“使用字符串键访问数组”。好吧,确实有,但不是数组项。数组项只有数字索引,您可以使用它来访问它。与数组相反,对象可能具有命名属性。因此,当您看到类似的内容时:data = myVar['data'],您可以判断您正在处理一个对象,而data = someVar[0]可以同时是一个数组(最有可能)或一个键名为“0”的对象。

30秒到达战场

我认为您在第一个示例中遇到的问题不是因为它返回了一个键。我相信问题是因为data没有名为keylist. 与其这样,不如试试data[keylist[1]]看看这是否适合你。这个应该工作的原因是,在这种情况下,Javascript 将评估返回的字符串keylist[1],然后将其用作data变量的字符串索引。让我知道这是否适合您:D

人到中年有点甜

您可以尝试使用类似这样的东西。data[keylist[1]]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript