在jquery中将项添加到数组

时间:2011-10-04 14:36:00

标签: jquery jquery-selectors

我知道这段代码是正确的,我没有写。我试图了解代码正在做什么。

  1. 创建变量
  2. 循环遍历无序列表的子项
  3. set cssClass = class name
  4. 如果cssClass不在myarray中,请将其添加到myarray
  5. 我熟悉其他检查项目是否在数组中的方法,并熟悉将项目添加到数组的其他方法,但这种方法让我很困惑。其他语言是否支持这种语法?

        var myarray = [];
        $(".somelist > li").each(function() {
        var cssClass = $(this).attr("class");
    
        //This part below is CONFUSING
        if(!myarray[cssClass]) {
             myarray[cssClass] = true;
        }
    });    
    

4 个答案:

答案 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。 我不知道这段代码的上下文,但从这一点来看似乎有点无用。