繁体   English   中英

JavaScript关联数组(字典)不起作用

[英]Javascript associative array(Dictionary) not working

我下面的JS代码警报为空很奇怪。

    // Used as Dictionary:
    var dict = new Array();
    dict['STAR'] = "star";
    dict['MOUTH'] = "mouth";
    dict['HAND'] = "hand";
    alert(dict);
    alert(dict("MOUTH"));

有什么建议吗?


PS谢谢大家! 我知道哪里出错了!alert(dict(“ MOUTH”)); -应该保持警惕(dict [“ MOUTH”]);

JS中没有关联数组之类的东西。

您可以对一个对象执行相同的操作:

var dict = {};
dict['STAR'] = "star";
dict['MOUTH'] = "mouth";
dict['HAND'] = "hand";
alert(dict);
alert(dict["MOUTH"]);

或者,如果键是有效的变量名,则可以将它们写为属性:

dict.star = "star";
dict.mouth = ...;

或使用直接文字:

var dict = {
    star: "star",
    mouth: "mouth",
    hand: "hand"
};

实际上,在JS中,没有100%等同于Dictionary / associative数组,因为即使空对象也有其自己的方法(例如hasOwnProperty ),这意味着您可以覆盖对象的“本机”元素。 但是,有一些解决方法,例如使用Object.create(null) ,它是一个完全空的对象,但并非在所有浏览器中都可用...或使用带有前缀的getter和setter。

   // Used as Dictionary:
var dict = {};
dict['STAR'] = "star";
dict['MOUTH'] = "mouth";
dict['HAND'] = "hand";
alert(dict);
alert(dict["MOUTH"]);

这样使用:

var dict = {
    STAR: "star",
    MOUTH: "mouth",
    HAND: "hand"
};

alert(dict);
alert(dict.MOUTH);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM