2011-10-04 53 views
0

我知道這段代碼是正確的,我沒有寫它。我試圖瞭解代碼在做什麼。將項目添加到jquery中的數組

  1. 創建通過無序列表的孩子變量
  2. 集的CssClass =類名
  3. 如果CssClass屬性是不是在myarray中,將它添加到MYARRAY

我所熟悉的其他檢查項目是否在數組中的方法,以及熟悉其他添加項目到數組的方法,但是這種方法讓我感到困惑。其他語言是否支持這種類型的語法?

var myarray = []; 
    $(".somelist > li").each(function() { 
    var cssClass = $(this).attr("class"); 

    //This part below is CONFUSING 
    if(!myarray[cssClass]) { 
     myarray[cssClass] = true; 
    } 
});  
+0

如果任何類名是非整數,myarray = []應該是myarray = {}。 –

+0

混亂和愚蠢的一點是'myarray'是一個數組而不是一個對象。當然,數組也是對象,它只是不能用作數組。 – Raynos

+0

此鏈接可能對其他人有幫助。 http://www.javascriptkata.com/2007/03/29/how-to-use-javascript-hashes/ – user584583

回答

1
1 if(!myarray[cssClass]) { 
2   myarray[cssClass] = true; 
    } 

這裏是發生了什麼時,myarray變量被用作散列簡要概述 -

1 - 檢查是否當前的類名是在數組中。如果類名不在數組中,則myarray[cssClass]將返回'falsy'值。

2 - 如果該類不是數組中,將其添加到陣列,並設置它的值設置爲true

1

在這種情況下,只有當它是第一次出現該數組時纔會是錯誤的。當它的第二個循環和類是相同的,它不會再次將其更改爲true。它沒有任何意義。此代碼是

的代名詞
var myarray = []; 
    $(".somelist > li").each(function() { 
    var cssClass = $(this).attr("class"); 
    myarray[cssClass] = true; 
}); 
2

如果散列/映射不包含給定類的條目,請添加它。

它創建somelist類中列表項使用的所有類的集合。

1

如果陣列中不包含由CssClass屬性變量代表的鍵的條目,將其添加並將該鍵的值設置爲true。如果它已經存在,它保持真實...所以

if(!myarray[cssClass])) 

如果沒有鍵值設置爲cssClass變量,則返回false。 我不知道這段代碼的上下文,但從這一點來看,它似乎有點無用。