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

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

            })();

我错过了什么?

最佳答案

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 处有一个 polyfill

关于javascript循环遍历列表项并在数组中返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551920/

相关文章:

javascript - 使用moment.js转换时间(HH :mm:ss) to (HH:mm)

javascript - 在闰年的情况下比较日期字段

javascript - 如何让 jQuery slider 敏感才能在 iPhone 上正常工作?

javascript - 如何将 nodemon 与 .env 文件一起使用?

javascript - 从 .height 动态生成的 padding-top 值

javascript - 预加载网站

javascript - sinon 模拟 withArgs 中具有未知值的对象 - sinon.match

javascript:是否可以自动将对象推送到空数组(创建时)?

javascript - 需要使用 Javascript 动态插入表单

javascript - NodeJS 在读取 txt 时调用函数。文件已更新