Javascript through list items and returns results in an array

I am trying to skip an unordered list of numbers with javascript. The function should store all the numbers in the array so that I can find which numbers are duplicates. Any help would be greatly appreciated. So far I:

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

and the beginning of 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(); })(); 

What am I missing?

+7
javascript
source share
1 answer
 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

In order not to get duplicate values, you can do

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

Fiddle

And also get an array with values ​​that appear more than once

 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 may not be supported in all browsers, but there polyfill in MDN

+23
source share

All Articles