/** Vue源码 296行
* Check if two values are loosely equal - that is,
* if they are plain objects, do they have the same shape?
*/
function isObject(data){
return typeof data === 'object' && data !== null
}
function looseEqual(a,b){
if(a===b) return true
let isObjectA = isObject(a)
let isObjectB = isObject(a)
if(isObjectA && isObjectB){
let isArrayA = Array.isArray(a)
let isArrayB = Array.isArray(b)
if(isArrayA && isArrayB){
return isArrayA.length === isArrayB && isArray.every((i,k)=> looseEqual(i,b[k]))
}else if(a instanceof Date && b instanceof Date){
return a.getTime() === b.getTime()
}else if(!isArrayA && !isArrayB){
let keysA = Object.keys(a)
let keysB = Object.keys(b)
return keysA.length === keysB.length && keys.every(i=>looseEqual(a[i],b[i]))
}else{
/* istanbul ignore next */
return false
}
}else if(!isObjectA && !isObjectB){
return String(a) === String(b)
}else{
/* istanbul ignore next */
return false
}
}
js 判断宽松相等
原创StavinLi ©著作权
文章标签 巩固 js 文章分类 JavaScript 前端开发
上一篇:js冒泡、快排、选择排序
下一篇:js 继承的方式
-
【JS】137-重温基础:相等性判断
本文是 重温基础 系列文章的第十八篇。今日感受:优化自己的代码,也是很愉快的事情。
操作数 操作符 javascript -
使用js判断颜色是否相等,然后投票
使用js判断颜色是否相等,然后投票
css js代码 置顶 jquery -
javascript 相等 js判断数值相等
有关js中能否使用equals来判断相等的问题
javascript 相等 自动转换 数据类型 Java
















