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