判断两个数组是否完全相同(数组里可以是数字 字符串 对象等)
fn(oldData,newData){
//类型为基本类型时,如果相同,则返回true
if(oldData === newData) return true;
//类型为对象并且元素个数相同
if(isObject(oldData)&&isObject(newData)&&Object.keys(oldData).length===Object.keys(newData).length){
//遍历所有对象中所有属性,判断元素是否相同
for(const key in oldData){
if(oldData.hasOwnProperty(key)){
if(!equalsObj(oldData[key],newData[key]))
//对象中具有不同属性,返回false
return false
}
}
} else if(isArray(oldData)&&isArray(newData)&&oldData.length===newData.length){
//数据类型为数组且长度相同
for(let i=0,i<oldData.length;i++){
if(!equalsObj(oldData[i],newData[i]))
//如果数组元素中具有不相同的元素,返回false
return false
}
}else{
//其他类型全都返回false
return false
}
//走到这里,说明数组或者对象中所有元素都相等,返回true
return true
}