Javascript数组键检索

Javascript数组键检索,javascript,arrays,dynamic,Javascript,Arrays,Dynamic,我的JavaScript代码将大量数据存储在数组中。我想用类似于我在下面写的东西检索一个密钥。应该检索的It键基于依赖于页面的变量。以下代码不起作用。谁能给我一个解决这个问题的办法吗 这是执行自动共轭的脚本的一部分。(在一个div中查找主语,然后在另一个div中查找动词,然后通过从数组中检索共轭形式来共轭动词) 它应该如何工作的示例: verb = innerhtmlfromdiv; subject = innerhtmlfromotherdiv; function getarray(A

我的JavaScript代码将大量数据存储在数组中。我想用类似于我在下面写的东西检索一个密钥。应该检索的It键基于依赖于页面的变量。以下代码不起作用。谁能给我一个解决这个问题的办法吗

这是执行自动共轭的脚本的一部分。(在一个div中查找主语,然后在另一个div中查找动词,然后通过从数组中检索共轭形式来共轭动词)

它应该如何工作的示例:

verb = innerhtmlfromdiv;
subject = innerhtmlfromotherdiv;
    function getarray(Array,Key) {
           return Array[Key]; }
conjugatedverb = getarray(verb,subject);
htmltextbox.value = conjugatedverb;

尝试将参数名称
Array
更改为其他名称
Array
是javascript中内置函数/对象的名称。

首先,您需要的是对象,而不是数组。我猜您是javascript新手,以前的语言是PHP或PERL,因此您认为您使用的是“关联数组”

基础:Javascript中没有关联数组。有对象,还有一个称为Array的对象的非原始子类,它有一些处理数字命名对象属性的方法,还有一个神奇的长度属性

因为您处理的键是字符串,而不是数字,所以数组没有用处

另一方面,Javascript对象类似于php中的关联数组或perl中的哈希。(但它们并不完全相同)

毫无疑问,您已经发现,对于对象,可以使用下标符号访问某些属性,如

verbs["go"] = "went";
这相当于

verbs.go = "went";
一个常见的错误是认为点表示法只用于对象,而下标表示法用于“关联数组”,因为这就是它在PHP中的工作方式。在javascript中,这两种符号是可以互换的。由于数组是Object的一个子类,上面的示例也适用于它们(但它们不使用数组的任何特殊属性)

至于你的具体问题:

你需要一个充满对象的对象

比如说

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"

我不太明白这个函数的意义。这就像写作:

function getValue(var) {return var}
为什么不以正常方式获取值,而不将其包装在无用的函数中:

conjugatedverb = verb[subject];
htmltextbox.value = conjugatedverb;

此外,当您声称从元素中生成innerHTML并以某种方式获取对象而不是字符串时,代码也没有意义。到底发生了什么?我想你的问题甚至在这段代码之前就开始了。

我真傻。忘了这是个关键词。头撞墙,干杯,伙计!实际上,
Array
是一个函数,而不是一个关键字。这应该没有什么区别。如果您将“Array”设为参数,它将隐藏对内置数组的引用,并成为您传入的任何内容。我认为这里的问题更微妙。完全同意@Breton,
Array
将被隐藏在函数范围内,名称更改没有任何区别,当然,除非您尝试在该函数中使用
数组
构造函数……至少您会同意,命名变量
数组
对象
是不好的做法。如果没有完整的源代码,调试程序是很困难的。我所能做的就是提供一条建议。你可能想把它变成一个函数,抽象出一个人如何获得共轭动词的精确机制。然而,我同意你对这件事的困惑。
conjugatedverb = verb[subject];
htmltextbox.value = conjugatedverb;