javascrpit-请问大家 js中有没有什么简单的方法比较两个对象是否相等

问题描述

请问大家 js中有没有什么简单的方法比较两个对象是否相等

如题 就像下面的两个
objA={ a:'123', b:'456' };

objB={ a:'123', b:'000' };

很明显不等 应该返回false 求解答

解决方案

objA == objB
本来就返回false

解决方案二:

没有,需要自己加比较方法

 <script>
Object.prototype.equals = function(obj){
if(this == obj)
return true;
if(typeof(obj)=="undefined"||obj==null||typeof(obj)!="object")
return false;
var length = 0; var length1=0;
for(var ele in this) {
length++;
}
for(var ele in obj) {
length1++;
}
if(length!=length1)
return false;
if(obj.constructor==this.constructor){
for(var ele in this){
if(typeof(this[ele])=="object") {
if(!this[ele].equals(obj[ele]))
return false;
}
else if(typeof(this[ele])=="function"){
if(!this[ele].toString().equals(obj[ele].toString()))
return false;
}
else if(this[ele]!=obj[ele])
return false;
}
return true;
}
return false;
};
objA={ a:'123', b:'456' };
objB={ a:'123', b:'000' };
alert(objA.equals(objB));
objC={ a:'123', b:'456' };
alert(objA.equals(objC));
</script>

解决方案三:

转为字符串后比较

 objA={ a:'123', b:'456' ,c:function(){return 1}};

objB={ b:'456', a:'123' ,c:function(){return 1}};
var sA=[],sB=[];
for(attr in objA)sA.push(attr+':'+objA[attr])
for(attr in objB)sB.push(attr+':'+objB[attr])
sA.sort(function(a,b){return a.split(':')[0]>b.split(':')?1:-1;});
sB.sort(function(a,b){return a.split(':')[0]>b.split(':')?1:-1;});
console.log(sA.join())
console.log(sB.join())
alert(sA.join()==sB.join())
时间: 2024-11-02 18:25:21

javascrpit-请问大家 js中有没有什么简单的方法比较两个对象是否相等的相关文章

js时间比较 js计算时间差的简单实现方法_javascript技巧

页面使用dateTimePicker获取数据类型为"12:12:12" 如果输入"11:11:11"要自动计算两者时间差 代码如下: var a="12:49:00",b="14:49:00"; s=a.split(":"); e=b.split(":"); var daya = new Date(); var dayb = new Date(); daya.setHours(s[0])

JS输出空格的简单实现方法_javascript技巧

在写JS代码的时候,大家可以会发现这样现象: document.write(" 1 2 3 "); 结果: 1 2 3 无论在输出的内容中什么位置有多少个空格,显示的结果好像只有一个空格. 这是因为浏览器显示机制,对手动敲入的空格,将连续多个空格显示成1个空格. 解决方法: 1. 使用输出html标签 来解决 document.write("  "+"1"+"    "+"23"); 结果: 1 23 2.

JS 截取字符串substr 和 substring方法的区别_javascript技巧

substr 方法 返回一个从指定位置开始的指定长度的子字符串. stringvar.substr(start [, length ]) 参数 stringvar 必选项.要提取子字符串的字符串文字或 String 对象. start 必选项.所需的子字符串的起始位置.字符串中的第一个字符的索引为 0. length 可选项.在返回的子字符串中应包括的字符个数. 说明 如果 length 为 0 或负数,将返回一个空字符串.如果没有指定该参数,则子字符串将延续到 stringvar 的最后. 示

使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)_javascript技巧

在网站开发中,经常会简单使用js代码来判断字符串中有多少汉字的功能.今天小编抽时间给大家分享实现代码.废话不多说了,直接给大家贴代码了. $("form").submit(function () { var content = editor.getContentTxt(); var sum = 0; re = /[\u4E00-\u9FA5]/g; //测试中文字符的正则 if (content) { if (re.test(content)) //使用正则判断是否存在中文 { if

Node.js和MongoDB实现简单日志分析系统

  Node.js和MongoDB实现简单日志分析系统  这篇文章主要介绍了Node.js和MongoDB实现简单日志分析系统,本文给出了服务器端.客户端.图表生成.Shell自动执行等功能的实现代码,需要的朋友可以参考下     在最近的项目中,为了便于分析把项目的日志都存成了JSON格式.之前日志直接存在了文件中,而MongoDB适时闯入了我的视线,于是就把log存进了MongoDB中.log只存起来是没有意义的,最关键的是要从日志中发现业务的趋势.系统的性能漏洞等.之前有一个用Java写的

Node.js的基本知识简单汇总_node.js

Node.js从2009年诞生至今,已经发展了两年有余,其成长的速度有目共睹.从在github的访问量超过Rails,到去年底Node.jsS创始人Ryan Dalh加盟Joyent获得企业资助,再到今年发布Windows移植版本,Node.js的前景获得了技术社区的肯定.InfoQ一直在关注Node.js的发展,在今年的两次Qcon大会(北京站和杭州站)都有专门的讲座.为了更好地促进Node.js在国内的技术推广,我们决定开设"深入浅出Node.js"专栏,邀请来自Node.js领域

如何在ASP.NET C#后台代码调用前台的JS,(JS中有JQUERY的函数)

问题描述 我也遇到和别人一样的问题,我也重复抄一次别人的问题的内容,请各位高手解决一下,谢谢!大家好!疑问:我想在后台程序中调用Jquery函数.根据不同条件提示用户不同的信息.为丰富弹出的样式,采用了Jquery的dialogplugin来Alert弹出信息.但是在code-behind(用的c#)中不知道怎么写才能调用JqueryFunction.测试Respose.Write(JqueryFunction)不行:用ScriptManager.RegisteStartu...也不行.请问谁帮

js 本地预览的简单实现方法

 本篇文章主要是对js本地预览的简单实现方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: // JavaScript Document eval(function(p,a,c,k,e,r){e=function(c){return(c<62?'':e(parseInt(c/62)))+((c=c%62)>35?String.fromCharCode(c+29):c.toString(36))};if('0'.replace(0,e)==0){while(c--)r[e

js模拟hashtable的简单实例介绍

 本篇文章主要是对js模拟hashtable的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下: function Hashtable()//自定义hashtable {     this._hash = new Object();     this.add = function(key, value) {         if (typeof (key) != "undefined") {             if (this.contains(key