2013-12-12 51 views
7

我一直在試圖循環訪問javascript的無序數字列表。該函數應該將所有數字存儲在數組中,以便我可以找到哪些數字是重複的。任何幫助,將不勝感激。到目前爲止,我有:JavaScript循環通過列表項並返回數組中的結果

<html> 
<head> 
    <title></title> 
</head> 
<body> 
<ul id="ul"> 
    <li>6</li> 
    <li>3</li> 
    <li>1</li> 
    <li>4</li> 
    <li>7</li> 
    <li>4</li> 
    <li>2</li> 
    <li>8</li> 
    <li>9</li> 
    <li>2</li> 
</ul> 
</body> 
</html> 

和JavaScript的一個開始:

(function(){ 

      var nums = document.getElementById("ul"); 
      var listItem = nums.getElementsByTagName("li"); 

      var newNums = ""; 

      var dups = function(){ 
      for (var i = 0; i < listItem.length; i++){ 

      } 

      }; dups(); 

      })(); 

我缺少什麼?

回答

23
var nums = document.getElementById("ul"); 
var listItem = nums.getElementsByTagName("li"); 

var newNums = []; 

for (var i=0; i < listItem.length; i++) { 
    newNums.push(parseInt(listItem[i].innerHTML, 10)); 
} 

FIDDLE

拿不到重複值,你可以做

for (var i=0; i < listItem.length; i++) { 
    var num = parseInt(listItem[i].innerHTML, 10); 
    if (newNums.indexOf(num) === -1) { 
     newNums.push(num); 
    } 
} 

FIDDLE

而且也得到了與出現不止一次

var newNums = [], 
    duplicate = []; 

for (var i=0; i < listItem.length; i++) { 
    var num = parseInt(listItem[i].innerHTML, 10); 
    if (newNums.indexOf(num) === -1) { 
     newNums.push(num); 
    }else{ 
     duplicate.push(num); 
    } 
} 
數組中的值

FIDDLE

Array.indexOf可能無法在所有的瀏覽器都支持,但在MDN

有一個填充工具在
相關問題