思路1:双重for循环去重
var arr=new Array(8) //首先声明一个函数接受用户输入
for(var n=0;n<arr.length;n++){
arr[n]=Number(prompt('请输入第'+(n+1)+'个数'))
}
console.log(arr) //获得一个数组
for(var n=0,rute=[];n<arr.length;n++){ //数组依次输出,并声明新的空数组接收去重后的元素
for(var j=0;j<rute.length;j++){
if(arr[n]==rute[j]){ //新数组元素依次与arr[i]比较,两种情况,1如果有相同的元素则退出循环,不用管相同的arr[i]
//如果没有找到相同元素,j为rute下标,循环变量j将一直++,直到不满足内循环条件,退出内循环时,j==rute.lenth
break;
}
}
if(j==rute.length){ //当 j==rute.length时,说明整个内循环已经完全运行完成,
//也说明arr[i]在rute里面没有找到相同元素,所以此时的arr[i]对于rute来说为不重复的新元素
rute[rute.length]=arr[n] //rute.length始终比rute多一的特性,所以用rute[rute.length]作为被arr[i]赋值的元素进行添加
}
}
console.log(rute) //获得不重复元素的数组
}
思路2:数组下标判断法去重
利用indexof属性:默认从下标为0开始检索字符,并返回检索到元素的下标
function unique3(array){
var n = [array[0]]; //结果数组
for(var i = 1; i < array.length; i++){
//indexof属性为默认从下标为0开始检索字符,并返回检索到元素的下标,
//将数组中除arr[0]以外的所有元素,检索一遍,当检索到相同元素时,
//indexOf(array[i])返回的是默认从0开始的第一个相同元素的下标,当检索到第一个元素后就不会继续检索
// 而i却是第二个相同元素的下标,所以两者下标不相同,为重复元素,不能添加到新数组
if(array.indexOf(array[i]) == i){
n.push(array[i]);
}
}
return n;
}