我知道这段代码是正确的,我没有写。我试图了解代码正在做什么。
我熟悉其他检查项目是否在数组中的方法,并熟悉将项目添加到数组的其他方法,但这种方法让我很困惑。其他语言是否支持这种语法?
var myarray = [];
$(".somelist > li").each(function() {
var cssClass = $(this).attr("class");
//This part below is CONFUSING
if(!myarray[cssClass]) {
myarray[cssClass] = true;
}
});
答案 0 :(得分:2)
如果散列/映射不包含给定类的条目,请添加它。
它正在创建somelist类中列表项使用的所有类的集合。
答案 1 :(得分:1)
在这种情况下,只有当它首次出现时才会出现错误。当它的第二个循环和类相同时,它不会再次将其更改为true
。但这没有任何意义。此代码是
var myarray = [];
$(".somelist > li").each(function() {
var cssClass = $(this).attr("class");
myarray[cssClass] = true;
});
答案 2 :(得分:1)
1 if(!myarray[cssClass]) {
2 myarray[cssClass] = true;
}
以下是发生了什么的简要概述,myarray
变量用作哈希 -
1 - 检查当前类名是否在数组中。如果类名未在数组中包含,myarray[cssClass]
将返回“falsy”值。
2 - 如果该类不在数组中,请将其添加到数组并将其值设置为true
答案 3 :(得分:1)
如果数组不包含带有cssClass变量表示的键的条目,它将添加它并将该键的值设置为true。如果它已经存在,它就会保持正确......所以
if(!myarray[cssClass]))
如果没有具有设置为cssClass变量的值的键,则返回false。 我不知道这段代码的上下文,但从这一点来看似乎有点无用。