我的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;
答案 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并以某种方式获取对象而不是字符串时,您的代码没有意义。真的发生了什么?我认为你的问题甚至在这段代码之前就开始了。