我一直在尝试使用 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 ) );
}
为了不得到重复的值你可以这样做
for (var i=0; i < listItem.length; i++) {
var num = parseInt( listItem[i].innerHTML, 10 );
if (newNums.indexOf(num) === -1) {
newNums.push( num );
}
}
并且还得到一个包含出现不止一次的值的数组
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 );
}
}
Array.indexOf
可能并非所有浏览器都支持,但在 MDN 处有一个 polyfill
关于javascript循环遍历列表项并在数组中返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20551920/