文章分类 Classification
javascript判断两对象是否相等
稿件来源: 阳光企业网站管理系统 撰稿作者: 太阳光 发表日期: 2016-03-02 阅读次数: 104 查看权限: 游客查看
在js中判断两对象是否相等实际判断的是两引用地址是否相同。但不同地址就算结构一样也不会相等。
有时我们需要判断两对象结构是否相同,这时需要写方法来处理。
function equalObject(a, b) { var i,k,ks = '',_ks = '',f = arguments.callee,ta = Object.prototype.toString.call(a),tb = Object.prototype.toString.call(b); if (ta != tb) { return false; }else if (ta == '[object Array]') { if(a.length != b.length)return false; for (i = a.length; i--;) { if (! f(a[i], b[i])) return false; } }else if (ta == '[object Object]') { for(k in b)ks += k; for (k in a) { _ks += k; if (! f(a[k], b[k])) return false; } if(ks != _ks)return false; }else if(ta == '[object Number]'){ return a !== a && b !== b ? true : a == b;//考虑NaN }else{ return a === b; } return true; } var a = {a:'sdt',k:[2,{b:NaN}],n:undefined}; var b = {a:String('sdt'),k:[2,{b:NaN}],n:undefined}; console.log(equalObject(a, b));
注意:不能嵌入函数来判断,否则就算函数结构一样也不会相等。这个主要是判断非函数外的所有对象类型。
关键词: javascript,判断对象相等 编辑时间: 2016-03-03 9:30:55
4
高兴4
支持4
搞笑4
不解4
谎言4
枪稿4
震惊4
无奈4
无聊3
反对4
愤怒
50%(4)
50%(4)
- 暂无评论
文章图片 article Pictrue
网友评论