在项目中偶尔会用到数组,通过原生js去除数组的重复项。简单的记下几种方法,亲测可用。。
第一种方法:
var Arr = [
0,
0,
1,
1,
2,
2,
3,
3,
4,
4,
5,
5,
6,
7,
8,
9];
function unArray (Arr) {
var newArr = [];
for (var i =
0; i < Arr.length; i++) {
if (newArr.indexOf(Arr[i]) == -
1){
newArr.push(Arr[i])
}
};
return newArr;
}
unArray(Arr);
第一种方法是检测新数组newArr里有没有包含Arr里的i项,如果没有则向newArr里添加Aii[i]项,如果有则跳过;不做任何操作。
第二种方法:
var Arr = [
0,
0,
1,
1,
2,
2,
3,
3,
4,
4,
5,
5,
6,
7,
8,
9];
function unArray (Arr) {
var newArr = [Arr[
0]];
for (var i =
1; i < Arr.length; i++) {
if (Arr.indexOf(Arr[i]) == i){
newArr.push(Arr[i])
}
};
return newArr;
}
unArray(Arr);
第二种方法是在Arr数组里检测,Arr.indexOf(Arr[i])返回某一项在Arr数组里第一次出现的位置,如果第一次出现就push到newArr数组去,如果第二次出现,则什么都不操作。
第三种方法:
var Arr = [
0,
0,
1,
1,
2,
2,
3,
3,
4,
4,
5,
5,
6,
7,
8,
9];
function unArray (Arr) {
var newArr = [],hash = {};
for (var i =
0; i < Arr.length; i++) {
if (!hash[Arr[i]]){
hash[Arr[i]] =
true;
newArr.push(Arr[i])
}
};
return newArr;
}
unArray(Arr);
//console.log(unArray(Arr)); 第三种是关于hash表的,不太熟悉hash表,所以用到的很少啊。。
第四种方法
var Arr = [
0,
0,
1,
1,
2,
2,
3,
3,
4,
4,
5,
5,
6,
7,
8,
9];
function unArray (Arr) {
var newArr = [],firstArr = Arr[
0];
for (var i =
0; i < Arr.length; i++) {
if (Arr[i] !== firstArr){
newArr.push(Arr[i]);
firstArr = Arr[i];
}
};
return newArr;
}
unArray(Arr);
第五种方法
使用双层循环的方式,也是我们最容易想到的一种:
var arr=[1,22,3,1,4,4,6,3];
function reArr(arr){
var newArr=[];
for(i=0;i<arr.length;i++){
var flag=true;
for(j=0;j<i;j++){
if(arr[i]===arr[j]){
flag=false;
break;
}
}
if(flag){
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(reArr(arr));
转载请注明原文地址: https://ju.6miu.com/read-1298024.html