实现一个数组去重
function unique(arr){
for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
if(arr[i]===arr[j]){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}];
console.log(unique(arr))
对象数组去重
const isObject = (obj) => typeof obj === 'object' && obj !== null
function eq(obj1,obj2){
if(!isObject(obj1) || !isObject(obj2)){
return obj1 === obj2
}
if(obj1 === obj2){
return true
}
if(Object.keys(obj1).length !== Object.keys(obj2).length){
return false
}
for (const key in obj1) {
const flag = eq(obj1[key],obj2[key])
if(!flag){
return false
}
}
return true
}
function unique2(arr){
for(var i=0; i<arr.length; i++){
for(var j=i+1; j<arr.length; j++){
if(eq(arr[i],arr[j])){
arr.splice(j,1);
j--;
}
}
}
return arr;
}
const _arr = [
1,2,2,1,
{
a:1,
b:2,
c:[11]
},
{
a:1,
b:2,
c:[11]
},
{
a:1,
b:2,
c:[112]
}
]
const __arr = unique2(_arr)
console.log(__arr);