我一直试图用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();
})();
我错过了什么?
答案 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 ) );
}
要获得重复的值,您可以
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