2013-12-12 17 views
7

Tôi đã cố gắng lặp qua danh sách số không theo thứ tự với javascript. Hàm sẽ lưu trữ tất cả các số trong một mảng để tôi có thể tìm số nào trùng lặp. Bất kỳ trợ giúp sẽ được đánh giá cao. Cho đến nay tôi có:javascript lặp qua các mục danh sách và trả lại kết quả trong một mảng

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

và một sự khởi đầu trên 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(); 

      })(); 

tôi thiếu cái gì?

Trả lời

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

Để không nhận được giá trị nhân bản bạn có thể làm

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

FIDDLE

Và cũng để có được một mảng với giá trị xuất hiện nhiều hơn một lần

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 có thể không được hỗ trợ trong tất cả các trình duyệt, nhưng có một polyfill qua tại MDN

Các vấn đề liên quan