Javascript Loop Through List Items and Return the Results in an Array

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

    <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 a start on the 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?

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

To not get duplicated 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 to also get an array with the 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 might not be supported in all browsers, but there's a polyfill over at MDN

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Elena Rostova

Elena Rostova

Lead Health, Wellness & Medical Journalist

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.

Share this article
Twitter Facebook Pinterest