Javascript数组密钥检索

时间:2009-12-29 00:16:15

标签: javascript arrays dynamic

我的JavaScript代码在数组中存储了大量数据。我想使用类似于下面写的内容来检索密钥。应该检索的密钥是基于与页面相关的变量。以下代码不起作用。谁能给我一个解决这个问题的方法呢?

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

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;

3 个答案:

答案 0 :(得分:3)

首先,你想要的是一个Object,而不是一个Array。我猜你是javascript的新手,你以前的语言是PHP或PERL,所以你认为你使用的是“关联数组”。

基础知识:Javascript中没有关联数组这样的东西。有Object和Object的非原始子类Array,它有一些处理数字命名对象属性的方法和一个魔术长度属性。

由于您正在处理的键是字符串,而不是数字,因此您无法使用数组。

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

如您所知,使用Object,您可以使用下标表示法来访问某些属性,如

verbs["go"] = "went";

这与

无关
verbs.go = "went";

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

至于你的具体问题:

你需要一个装满物体的物体。

所以例如

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"

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我不太明白这个功能。这就像写作:

function getValue(var) {return var}

为什么不在没有将它包装在无用函数中的情况下以正常方式获取值:

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

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