数组去重
2020-05-19 本文已影响0人
马甲要掉了
输入两个数组
- 双层for循环
function distinct(a,b){
let arr = a.concat(b);
for(let i=0,len=arr.length;i<len;i++){
for(let j=i+1;j<len;j++){
if(arr[i]==arr[j]){
arr.splice(j,1);
len--;
j--;
}
}
}
return arr;
}
- for...of + includes
function distinct(a,b){
let arr = a.concat(b);
let newarr=[];
for(let value of arr){
!newarr.includes(value) && newarr.push(value);
}
return newarr;
}
distinct([6,2,4],[2,4,6]) // [6,2,4]
for...of 中遍历的是value值
for..in中遍历的是key值
- arr.sort()
function distinct(a,b){
let arr = a.concat(b);
arr.sort();
let newarr = [arr[0]];
for(let i=1;i<arr.length;i++){
arr[i]!=arr[i-1] && newarr.push(arr[i])
}
return newarr;
}
distinct([6,2,4],[2,4,6]) // [2,4,6]
- Array.from(new Set())
function distinct(a,b){
let arr = a.concat(b);
return Array.from(new Set(arr));
}
distinct([6,2,4],[2,4,6]) // [6,2,4]
- for..of + Object
function distinct(a,b){
let arr = a.concat(b);
let obj ={};
let newarr = [];
for(let value of arr){
if(!obj[value]){
obj[value] = 1;
newarr.push(value);
}
}
return newarr
}
distinct([6,2,4],[2,4,6]) // [6,2,4]
输入单个数组
- 双层for循环
let arr = [2,6,3,6,1]
function distinct(arr){
let newarr = [];
let j;
let newlen;
for(let i=0,len=arr.length;i<len;i++){
for(j=0,newlen=newarr.length;j<newlen;j++){
if(arr[i]==newarr[j]){
break;
}
}
if(j==newlen){
newarr.push(arr[i]);
}
}
return newarr;
}
console.log(distinct(arr)) // [2,6,1,4]
- for循环+indexOf()
let arr = [2,6,3,6,1]
function distinct(arr){
let newarr = [];
for(let i=0;i<arr.length;i++){
if(newarr.indexOf(arr[i])==-1){
newarr.push(arr[i]);
}
}
return newarr;
}
console.log(distinct(arr)); // [2,6,3,1]
- arr.sort()
let arr = [2,6,3,6,1]
function distinct(arr){
arr.sort();
let newarr = [arr[0]];
for(let i=1;i<arr.length-1;i++){
newarr[i]!=newarr[i-1] && newarr.push(arr[i]);
}
return newarr;
}
console.log(distinct(arr)); // [1,2,3,6]
- for..of +Object
let arr = [2,6,3,6,1]
function distinct(arr){
arr.sort();
let newarr = [];
let obj = {};
for(let value of obj){
if(!obj[value]){
obj[value]=1;
newarr.push(value);
}
}
return newarr;
}
console.log(distinct(arr)); // [1,2,3,6]