Javascript 数组键检索

标签 javascript arrays dynamic

我的 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/

相关文章:

javascript - javascript中的作用域表现得很奇怪

javascript - 当 li 上的类不存在时禁用按钮

sql - 如何触发一个表改变另一个表列的值

javascript - 如何在 setState 回调之外将 .map() val 和 key 渲染为 prop

javascript每9秒循环一次?

c - 预期为 'double **' 但参数的类型为 'double (*)[2]'

sql - 如何在 PostgreSQL 中使用 CASE 语句替换文本数组中的空白行?

php - 在 PHP 中是否有替代数组的数据结构,我可以从中受益于不同的索引技术?

MySQL myisam 动态表和 CHAR 类型

ios - 如何在 iOS 中创建基于 json 的动态 UI