vue--判断两个对象是否相等
//判断两个对象是否相等 isEqual(objA,objB){ //相等 if(objA === objB) return objA !== 0 || 1/objA === 1/objB; //空判断 if(objA == null || objB == null) return objA === objB; //类型判断 if(Object.prototype.toString.call(objA) !== Object.prototype.toString.call(objB)) return false; switch(Object.prototype.toString.call(objA)){ case '[object RegExp]': case '[object String]': //字符串转换比较 return '' + objA ==='' + objB; case '[object Number]': //数字转换比较,判断是否为NaN if(+objA !== +objA){ return +objB !== +objB; } return +objA === 0?1/ +objA === 1/objB : +objA === +objB; case '[object Date]': case '[object Boolean]': return +objA === +objB; case '[object Array]': //判断数组 for(let i = 0; i < objA.length; i++){ if (!this.isEqual(objA[i],objB[i])) return false; } return true; case '[object Object]': //判断对象 let keys = Object.keys(objA); for(let i = 0; i < keys.length; i++){ if (!this.isEqual(objA[keys[i]],objB[keys[i]])) return false; } keys = Object.keys(objB); for(let i = 0; i < keys.length; i++){ if (!this.isEqual(objA[keys[i]],objB[keys[i]])) return false; } return true; default : return false; } },
一般这种判断,我们会写一个公用的方法,放在一个公用的文件,然后在main.js引入就可以了
在main.js文件中引入文件
//全局公用方法 import utils from './assets/js/utils'; Vue.prototype.$utils = utils;