/**
* json 格式对象的深度对比(供 comparisonObject 调用)
* @param sourceJson
* @param compareJson
* @returns {boolean}
*/
const comparisonJson = (sourceJson, compareJson) => {
const sourceKeys = Object.keys(sourceJson)
const compareKeys = Object.keys(compareJson)
if(sourceKeys.length !== compareKeys.length){
return false
}else{
for(const jsonKey of sourceKeys){
const sourceType = typeof sourceJson[jsonKey]
const compareType = typeof compareJson[jsonKey]
if(sourceType !== compareType){
return false
}else if(sourceType === 'object'){
return comparisonObject(sourceJson,compareJson)
}else if(sourceJson[jsonKey] !== compareJson[jsonKey]){
return false
}
}
return true
}
}
/**
* 对象的深度对比
* @param sourceObj
* @param compareObj
* @returns {boolean} true=相同,false=不相同
*/
const comparisonObject = (sourceObj, compareObj) => {
const sourceObjType = typeof sourceObj
const compareObjType = typeof compareObj
if (sourceObjType !== compareObjType) {
return false
} else if (sourceObjType === 'object') {
if (JSON.stringify(sourceObj) === JSON.stringify(compareObj)) {
return true
} else if (sourceObj instanceof Array) {
for (const sourceItem of sourceObj) {
for (const compareItem of compareObj) {
if (!comparisonJson(sourceItem, compareItem)) {
return false
}
}
}
return true
} else {
return comparisonJson(sourceObj, compareObj)
}
}
return sourceObj === compareObj
}
/**
* 数组自定义属性去重
* @param arr
* @param prop
*/
const arrayUnique = (arr, prop) => {
return arr.filter((element,index,self)=>{
return self.findIndex(el=>el[prop]===element[prop])===index
})
}
export {comparisonObject,arrayUnique}
网友评论