我的 JavaScript 代码在数组中存储大量数据。我想使用类似于我在下面写的内容来检索 key 。应该检索的 key 基于与页面相关的变量。下面的代码不起作用。谁能给我解决这个问题吗?
这是执行自动结合的脚本的一部分。 (在一个 div 中查找主语,然后在另一个 div 中查找动词,然后通过从数组中检索共轭形式来对动词进行共轭)
function getarray(Array,Key) {
return Array[Key];
}
它应该如何工作的示例:
verb = innerhtmlfromdiv;
subject = innerhtmlfromotherdiv;
function getarray(Array,Key) {
return Array[Key]; }
conjugatedverb = getarray(verb,subject);
htmltextbox.value = conjugatedverb;
最佳答案
首先,你想要的是一个对象,而不是一个数组。我猜您是 javascript 新手,并且您以前的语言是 PHP 或 PERL,因此您认为您使用的是“关联数组”。
基础知识:Javascript 中不存在关联数组之类的东西。有对象,以及对象的一个称为数组的非原始子类,它具有一些处理数字命名对象属性的方法,以及一个幻长属性。
由于您处理的键是字符串,而不是数字,因此数组没有用处。
另一方面,Javascript 对象类似于 php 中的关联数组或 perl 中的哈希。 (但它们并不完全相同)。
正如您毫无疑问地发现的那样,对于对象,您可以使用下标表示法来访问某些属性,如下所示
verbs["go"] = "went";
这相当于
verbs.go = "went";
一个常见的错误是认为点表示法仅用于对象,而下标表示法仅用于“关联数组”,因为这就是它在 PHP 中的工作方式。在 javascript 中,这两种表示法是可以互换的。由于数组是对象的子类,因此上面的示例也适用于它们(但它们不使用数组的任何特殊属性)。
至于您的具体问题:
你需要一个充满物体的物体。
例如
var verbs = {
"do":{"Truck":"Drive","Blender":"Turn On","Bike":"Ride"},
"take":{"Money":"Steal","Julie":"Accompany","Lever":"Pull}
}
那么你的函数将是:
function conjugate (verb, subject) {
return verbs[verb][subject];
}
它的使用示例是
conjugate("do","Truck") // returns "Drive"
关于Javascript 数组键检索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1972275/