2011-05-06 62 views
0

我有一個數組,我試圖檢查下一個緩慢的數組是否與當前的數組相同數組緩慢。我該如何檢查數組中的下一個元素是否與當前元素的名稱相同

這是到目前爲止我的邏輯:

$("#container").append("<table border='1' id='main-table'></table>");  
       var strNames = ["dennis", "dennis", "d00d", "sweet"].sort(); 
       var categories = []; 

       for (var i = 0; i < strNames.length; i++) { 

        if (strNames[i] == strNames[i+1]) 
         categories[i] = strNames[i]; 

        console.log(categories[i]); 
        if (categories.length > 1) { 
         $("#main-table").append("<tr class='main-table-row'><td><div class='expandTableCell' toggle='false'></div></td></tr>"); 
         for (var x = 0; x < categories.length; x++) 
          if (x == 0) 
           $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellHeader'>" + categories[x] + "</div>"); 
          else 
           $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellData'>" + categories[x] + "</div>"); 
        } else 
         $("#main-table").append("<tr class='main-table-row'><td>" + strNames[i] + "</tr>"); 
       } 

我需要它來檢查數組的下一個指標,如果它具有相同的名稱,將其存儲到其最終建設一個樹類。如果您需要更多信息,我可以嘗試提供更多信息。

+0

你需要哪些幫助? – eykanal 2011-05-06 18:01:32

+0

啊是的,這個問題很難問,我需要幫助將正確的值存儲到categories數組中。 – DMar 2011-05-06 18:07:14

+0

你想只保留重複嗎?或者,如果當前的人匹配下一個? – hunter 2011-05-06 18:12:16

回答

0

我不得不改變你的邏輯了一下,但在這裏你去:

Live Demo

$("#container").append("<table border='1' id='main-table'></table>"); 

var strNames = ["dennis", "dennis", "d00d", "sweet"].sort(); 
var categories = []; 

for (var i = 0; i < strNames.length; i++) { 
    var name = strNames[i]; 
    if (typeof(categories[name]) == 'undefined') categories[name] = 1; 
    else categories[name] += 1; 
} 

for (var name in categories) { 
    var val = categories[name]; 
    if (val > 1) { 
     $("#main-table").append("<tr class='main-table-row'><td><div class='expandTableCell' toggle='false'></div></td></tr>"); 
     for (var x = 0; x < val; x++) 
      if (x == 0) $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellHeader'>" + name + "</div>"); 
      else $("#main-table tr.main-table-row td div.expandTableCell").append("<div class='expandTableCellData'>" + name + "</div>"); 
    } else $("#main-table").append("<tr class='main-table-row'><td>" + name + "</tr>"); 
} 
+0

非常感謝!我很難解釋我是怎麼想這個工作的,而且你把它打在頭上:) – DMar 2011-05-06 20:12:39

0

相信

如果(strNames [I] == strNames第[i + 1]) 類別[I] = strNames [I];

將失敗,當我指向'strNames'數組的最後一個元素。因爲i + 1會指出數組,所以會拋出異常。

否則,我在這個「if」上看不到任何問題。爲了避免這種錯誤,你需要讓你的for循環是這樣的

for (var i = 0; i < strNames.length-1; i++) 

我也看到了另一個問題「如果」比較if (categories.length > 1)

不它必須是if (categories.length >= 1)?如果保持原樣,那麼當類別長度爲1時,不輸入塊。

+0

它被設置爲> 1,因爲如果該類別只有一個項目只是打印該項目,如果比較好,則添加一個類以擴展和縮小類別。 – DMar 2011-05-06 18:09:36

0

除了這樣做:

if (i + 1 < strNames.length 
    i + 1 < categories.length 
    && categories[i] == strNames[i+1]) 

你應該對你的方式

相關問題