[英]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.