判断两个对象是否相等的js函数

ENVI5.6+SARscape实战:基于哨兵一号的PS与SBAS时序InSAR地表形变监测全流程解析 本文详细解析了使用ENVI5.6和SARscape软件基于哨兵一号数据进行PS与SBAS时序InSAR地表形变监测的全流程。从数据获取、预处理到PS-InSAR和SBAS-InSAR处理,提供了实用技巧和优化建议,帮助用户高效完成地表形变监测任务。 阅读详情

判断两个对象是否相等的js函数

作者: 袁晓平  来源: 博客园  发布时间:2009-12-08 12:51  阅读:654 次   原文链接    [收藏]  

如果两个对象属性在初始化时出现的顺序不一样 但数目及值一样,最终比较结果也是true

支持每个属性又是其他类型,如对象、数组、数字、字符串 

function equal(objA, objB)

{
    if (typeof arguments[0] != typeof arguments[1])
        return false;

    //数组
    if (arguments[0] instanceof Array)
    {
        if (arguments[0].length != arguments[1].length)
            return false;
        
        var allElementsEqual = true;
        for (var i = 0; i < arguments[0].length; ++i)
        {
            if (typeof arguments[0][i] != typeof arguments[1][i])
                return false;

            if (typeof arguments[0][i] == 'number' && typeof arguments[1][i] == 'number')
                allElementsEqual = (arguments[0][i] == arguments[1][i]);
            else
                allElementsEqual = arguments.callee(arguments[0][i], arguments[1][i]);            //递归判断对象是否相等                
        }
        return allElementsEqual;
    }
    
    //对象
    if (arguments[0] instanceof Object && arguments[1] instanceof Object)
    {
        var result = true;
        var attributeLengthA = 0, attributeLengthB = 0;
        for (var o in arguments[0])
        {
            //判断两个对象的同名属性是否相同(数字或字符串)
            if (typeof arguments[0][o] == 'number' || typeof arguments[0][o] == 'string')
                result = eval("arguments[0]['" + o + "'] == arguments[1]['" + o + "']");
            else {
                //如果对象的属性也是对象,则递归判断两个对象的同名属性
                //if (!arguments.callee(arguments[0][o], arguments[1][o]))
                if (!arguments.callee(eval("arguments[0]['" + o + "']"), eval("arguments[1]['" + o + "']")))
                {
                    result = false;
                    return result;
                }
            }
            ++attributeLengthA;
        }
        
        for (var o in arguments[1]) {
            ++attributeLengthB;
        }
        
        //如果两个对象的属性数目不等,则两个对象也不等
        if (attributeLengthA != attributeLengthB)
            result = false;
        return result;
    }
    return arguments[0] == arguments[1];

}

 

var a = {Name:"YuanXP",Id:9,Go:{a:'1',b:'2'}};
var b = {Id:9,Name:"YuanXP",'Go':{a:'1',b:'2'}};

var r = equal(a, b);
alert(r); 

【Unity】Gif图片播放插件(支持UI及模型纹理渲染两种模式) unity本身不支持GIF格式文件直接渲染, 因此一般的做法是通过加载图片,通过代码控制其循环播放、停止等,模拟动画效果,本文简单介绍一下某个现有开源工具,感谢开源作者。 阅读详情

相关推荐

[原创]Linux 802.11n CSI tool Monitor模式

Linux 802.11n CSI tool Monitor模式 使用AP模式的缺陷在于ping 命令速度比较慢,且不能精确控制发送的参数,比如接收的包数量是不可控的。Monitor模式可以调制发送速率、发包数量、发送天线个数、HT模式、short/long guard interval等等,因此调通Monitor模式是必须的。期间参考了博主沃一德的CSI Tool安装使用讲解,对他的工作表示感...

u014645508的博客 1万+

JavaScript 中如何判断对象是否相等?

在 JavaScript 中判断两个对象是否相等是一个常见的需求。1. 有唯一标识属性的(比如说对象里有唯一的 ID),很简单,只需要对比它里面的唯一标识的属性,比如 id。3. 键不同或递归比较值也不同则返回 false。1. 先判断类型,如果不是对象就直接比较。4. 全部键和值都相同则返回 true。2. 对象就遍历键并递归比较值。

narukeu的博客 572

【硬件开源实战】STM32G070RBT6开发板从设计到避坑全解析

本文全面解析了STM32G070RBT6开发板从硬件设计到避坑的实战经验。详细介绍了电源设计、时钟电路、PCB布局等关键环节,分享了成本控制、焊接测试、软件开发和外设驱动的实用技巧,帮助开发者高效完成项目开发。

weixin_26897585的博客 243

js判断两个对象是否相等

通常不会得到你期望的结果,因为这些操作符比较的是对象的引用(即它们在内存中的位置),而不是它们的值或内容。因此,如果两个对象具有相同的属性名和属性值,但它们不是同一个对象实例,直接使用这些操作符会认为它们不相等。要判断两个对象是否相等(即它们包含相同的属性名和属性值),你需要自己实现一个函数来比较这两个对象的所有属性。在JavaScript中,直接比较两个对象(使用。

youhebuke225的博客 843

论文笔记:Group Equivariant Convolutional Networks

Group Equivariant Convolutional Networks 1、四个问题 要解决什么问题? 对卷积神经网络进行扩展,并提出一个在特定的变换(旋转、平移等,也可表示为一个特殊的群)下具有等变性的网络。 用了什么方法解决? 提出了一种新的卷积神经网络结构——群等变卷积神经网络(Group equivariant Convolutional Neural Network)...

hongbin_xu的博客 1万+

UVM(5)-TLM通信

TLM是一种基于事务 (transaction) 的通信方式,通常在高抽象级语言例如SystemC或者SV/UVM中作为模块之间的通讯方式。

2301_76431006的博客 2107

JS判断两个对象是否相等

① 方法一:通过JSON.stringify(obj)来判断两个对象转后的字符串是否相等 优点:用法简单,对于顺序相同的两个对象可以快速进行比较得到结果 缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会比较出错 ② 方法二:有递归的情况 ,对象里包含 对象 和 数组 function isObjectValueEqual(a, b) { var aProps = Object.getOwnPropertyNames(a); var bProps = Objec.

weixin_43416349的博客 9117

FFDNet-pytorch版本代码训练教程

该文章为FFDNet-pytorch版本代码训练教程,抓紧订阅学习!尽早入门发论文哦!

假技术Po主 1508

js判断两个对象是否相同的三种方式

js判断两个对象是否相同的三种方式

良_123的专栏 3620

授时中心被攻击?Windows 11 电脑时间不准?手把手教您如何更换国内稳定高速的时间服务器(时间服务器整理)

近期授时中心被攻击,时间同步重要性凸显。Windows 11 默认服务器在国内常遇网络问题。本文教你轻松修改时间服务器,选择更稳定、快速的国内优质服务器,彻底解决电脑时间不准的烦恼,让你的系统时间永远精准如一!🚀

XiaoqiangClub的博客 1091

【LangChain编程:从入门到实践】实现多模态代理

【LangChain编程:从入门到实践】实现多模态代理 关键词:LangChain, 多模态代理, 自然语言处理, 机器学习, 知识图谱, 对话系统, 代码生成, AI代理 1. 背景介绍 随着人工智

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 581

java中如何判断对象相等_[Java教程]Javascript 判断对象是否相等

[Java教程]Javascript 判断对象是否相等0 2014-10-30 12:01:32在Javascript中相等运算包括"==","==="全等,两者不同之处,不必多数,本篇文章我们将来讲述如何判断两个对象是否相等? 你可能会认为,如果两个对象有相同的属性,以及它们的属性有相同的值,那么这两个对象就相等。那么下面我们通过一个实例来论证下:var obj1 = { nam...

weixin_32267129的博客 247

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(一)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 2420

js-md5判断两个对象的keys是否相等

js-md5判断两个对象的keys是否相等

云散的博客 670

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【JS如何判断两个对象是否相等】

判断两个对象是否相等

weixin_45655721的博客 578

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

常用(实用)函数方法封装汇总(未完待续)

使用方法举例: 例如: 在某public.js文件里编写这些方法,在引用文件里先导入: import { isObjectValueEqual } from ‘@/utils/public’ 然后使用: isObjectValueEqual(oldValue, newValue) 1.js查找对象在对象数组中的位置 for (let i = 0, iLen = arr.length; i < iLen; i++) { if (arr[i].batchid === obj.batch

树上骑个猴的博客 390

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

判断数组对象中是否包含某个对象,判断2个对象是否相等

var arr =[ {name:'zhangsan'}, {name:'lisi'}, {name:'wangwu'} ]; var json1 = {name:"zhangsan"}; // 方法一: console.log(JSON.stringify(arr).indexOf(JSON.stringify(json1))); // 方法二: (前提是匹配和被匹配的存在赋值关系

kongjiea笔记 2万+

JavaScript判断两对象数组是否完全相同

他们都是导入类型 就算值完全一样 存储空间也是不一样的 绝对等于用运算符直接去判断肯定是有的问题的。对象 数组 以及对象数组都比较特殊。返回 true/false。可以直接采用如下方法。

weixin_45966674的博客 480

JS比较两个对象是否相等

虽然标题写的是如何判断两个对象相等,但本篇我们不仅仅判断两个对象相等,实际上,我们要做到的是如何判断两个参数相等,而这必然会涉及到多种类型的判断。 相等 什么是相等?在《JavaScript专题之去重》中,我们认为只要 === 的结果为 true,两者就相等,然而今天我们重新定义相等: 我们认为: NaN 和 NaN 是相等 [1] 和 [1] 是相等 {value: 1} 和 {value: ...

one-way or another 1797

JavaScript中引用数据类型如何比较是否相等--两个对象相比较属性和值是否相等

js中的对象是引用类型 使用 == /=== 已经无法判断两个对象的属性和值是否相等 函数封装 // 对比两个对象的值是否完全相等 返回值 true/false let isObjectValueEqual = (a, b)=>{ //取对象a和b的属性名 var aProps = Object.getOwnPropertyNames(a);//返回指定对象所有自身属性名 var bProps = Object.getOwnPropertyNames(b); /...

JackieDYH的博客 1979

Javascript 判断对象是否相等

Javascript 判断对象是否相等 在Javascript中相等运算包括"==","==="全等,两者不同之处,不必多数,本篇文章我们将来讲述如何判断两个对象是否相等? 你可能会认为,如果两个对象有相同的属性,以及它们的属性有相同的值,那么这两个对象就相等。那么下面我们通过一个实例来论证下: var obj1 = { name: "Benjamin", sex : "male...

倾心 1164

js比较两个对象是否相等

前言:如何判断两个对象是否相等? 两个Object类型对象,即使拥有相同属性、相同值,当使用 == 或 === 进行比较时,也不认为他们相等。这就是因为他们是通过引用(内存里的位置)比较的,不像基本类型是通过值比较的。 var obj1 = { name: "xiaoming", sex : "male" } var obj2 = { name: "xiaom...

qq_36742720的博客 1万+

js判断两个对象的值是否相等

毫无疑问js中对象是引用类型的对象,记录的是地址值,这时候用“==”亦或是“===”已经无法判断两个对象的内容是否相等了。看了很多人的帖子,感觉https://www.cnblogs.com/cuew1987/p/4057726.html这个是我找到可读性最好的。亲测可用! 方法如下:  function isObjectValueEqual(a, b) {         //取对象a和...

zm0422的博客 1万+

怎么判断两个对象相等

判断两个对象相等

qq_52143560的博客 3848

js判断两个对象是否相等的办法,包含绝对相等和形状内容相等

前端CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!CSS面试题文档,JavaScript面试题文档,Vue面试题文档,大厂面试题文档,需要的读者可以戳这里免费领取!**[外链图片转存中…(img-9C7nb2OJ-1713514818639)][外链图片转存中…(img-VAUULwJg-1713514818639)]

2401_84149996的博客 437
上一篇: Sencha Touch 2 中 listpaging 与 pullrefresh 2个插件的使用(分页功能实现)
下一篇: WebView访问HTTPS空白的SslError处理(兼容2.1)
OmelasShell
博客等级 码龄15年 5粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值