javascript循环遍历列表项并将结果返回到数组中

时间:2013-12-12 18:58:37

标签: 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();

            })();

我错过了什么?

1 个答案:

答案 0 :(得分:27)

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

处有填充。