2013-12-12 12 views
7

Próbowałem pętli przez nieuporządkowaną listę liczb z javascript. Funkcja powinna przechowywać wszystkie liczby w tablicy, aby móc znaleźć numery, które są duplikatami. Każda pomoc będzie doceniona. Do tej pory mam:Pętla javascript przez elementy listy i zwracają wyniki w tablicy

<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> 

i start na 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(); 

      })(); 

Czego mi brakuje?

Odpowiedz

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

Aby nie dostać zduplikowane wartości można zrobić

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

FIDDLE

I również uzyskać tablicę z wartościami, które pojawiają się więcej niż raz

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 może nie być dostępna we wszystkich przeglądarkach, ale istnieje polyfill na co MDN

Powiązane problemy