判断两个数组是否完全相同

255 阅读1分钟

判断两个数组是否完全相同(数组里可以是数字 字符串 对象等)

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
}