判断两个对象和数组是否相等以及去重

2,135 阅读1分钟

思路:先判断键值对个数是否相等,再判断对应key的value是否相等,

(objone,objtwo)=>{

let objoneLength = Object.keys(objone).length; 

let objtwoLength = Object.keys(objtwo).length;

objoneLength !== objtwoLength && return false;

for(let i in objone){

    objone[i] !== objtwo[i] && return false;
    
};

return true;

}

判断连个数组是否相等,思路相似,不同的是,数组有顺序

分顺序

(arrone,arrtwo)=>{

arrone.length !== arrtwo.length && return false;

for(let i in arrone){

    arrone[i] !== arrtwo && return false;
    
};

return true;

}

不分顺序的话,首先进行排序,在按照上面的来

arrone = arrone.sort();
arrtwo = arrone.sort();

判断数组是否有重复值,这个挺简单,先排序,在比较相邻值

arr = arr.sort();
for(let i in arr){
arr[i] === arr[i+1] && return true;
}
return false;

数组去重,这个有很多的方法,利用ES6的方法,最为简单方便

arr = Array.from(new Set(arr))
arr = [...new Set(arr)];

对象深拷贝

let {...objCopy} = obj;
let objCopy = {...obj};
let objCopy = Object.asign({},obj); let [...arrCopy] = arr;