JS中如何比较两个Json对象是否相等

javascript 比较两个json数据是否相等 let modeler = {} //比较数组是否相同 modeler.compArray = function (array1, array2) { if ((array1 && typeof array1 === "object" && array1.constructor === Array) && (array2 && typeof array2 === "object" && a 阅读详情

1、先准备三个工具方法,用于判断是否是对象类型,是否是数组,获取对象长度;
2、准备两个相同或不同的Json对象;
3、主要的代码;
4、调用代码。

一、判断是否是对象类型,是否是数组,获取对象长度。

function isObj(object) {
    return object && typeof(object) == 'object' && Object.prototype.toString.call(object).toLowerCase() == "[object object]";
}

function isArray(object) {
    return object && typeof(object) == 'object' && object.constructor == Array;
}

function getLength(object) {
    var count = 0;
    for(var i in object) count++;
    return count;
}

二、准备两个相同或不同的Json对象

var jsonObjA = {
    "Name": "MyName",
    "Company": "MyCompany",
    "Infos": [{
            "Age": "100"
        },
        {
            "Box": [{
                    "Height": "100"
                },
                {
                    "Weight": "200"
                }
            ]
        }
    ],
    "Address": "马栏山"
}
var jsonObjB = {
    "Name": "MyName",
    "Company": "MyCompany",
    "Infos": [{
            "Age": "100"
        },
        {
            "Box": [{
                    "Height": "100"
                },
                {
                    "Weight": "200"
                }
            ]
        }
    ],
    "Address": "马栏山二号"
}

三、主要的代码

function Compare(objA, objB) {
    if(!isObj(objA) || !isObj(objB)) return false; //判断类型是否正确
    if(getLength(objA) != getLength(objB)) return false; //判断长度是否一致
    return CompareObj(objA, objB, true); //默认为true
}

function CompareObj(objA, objB, flag) {
    for(var key in objA) {
        if(!flag) //跳出整个循环
            break;
        if(!objB.hasOwnProperty(key)) {
            flag = false;
            break;
        }
        if(!isArray(objA[key])) { //子级不是数组时,比较属性值
            if(objB[key] != objA[key]) {
                flag = false;
                break;
            }
        } else {
            if(!isArray(objB[key])) {
                flag = false;
                break;
            }
            var oA = objA[key],
                oB = objB[key];
            if(oA.length != oB.length) {
                flag = false;
                break;
            }
            for(var k in oA) {
                if(!flag) //这里跳出循环是为了不让递归继续
                    break;
                flag = CompareObj(oA[k], oB[k], flag);
            }
        }
    }
    return flag;
}

四、调用代码

var result = Compare(jsonObjA, jsonObjB);
console.log(result); // true or false
Js比较两个数组是否相同 别再相信toString和JSON.stringfy了!这个才管用xdm! 阅读详情

相关推荐

ES6中判断两个对象是否相等的方法

在ES6中,判断两个对象是否相等是一个常见的需求。在JavaScript中,对象是引用类型,因此简单的使用相等操作符(== 或 ===)来比较两个对象将会比较它们的引用而不是内容。需要注意的是,这种方法只适用于对象的属性是基本数据类型的情况,如果对象的属性是函数、日期对象等特殊类型,则无法正确判断相等性。这种方法适用于对象的属性比较简单的情况,但如果对象的属性是复杂的对象或嵌套的对象,就需要使用递归来进行深度比较。如果对象的属性比较简单,或者你只关心某些特定的属性是否相等,你可以手动比较对象的每个属性。

git_web425的博客 464

js比较两个对象数组的值是否相同

对象数组 相同:比较id和name的值都相同,返回true let arr1= [{"id" : 1, "name" : "zhangsan"}]; let arr2= [{"id" : 1, "name" : "zhangsan"}]; var data= JSON.stringify(arr1) === JSON.stringify(arr2); console.log(data); //true 不相同:比较id和name的值不相同时,返回false let arr1= [{"id" : 1, "n

前端打工人的博客 5452

详解JS 比较两个Json对象的值是否相等的实例

主要介绍了JS 比较两个Json对象的值是否相等的实例,有需要的朋友可以参考一下

js比较俩个对象是否相等

【代码】js比较俩个对象是否相等。

weixin_43923808的博客 821

Kotlin kapt插件报错全解析:从Could not load module到彻底解决(含Gradle 8.2.2适配指南)

本文深度解析了Kotlin开发中常见的kapt插件报错“Could not load module”的根源,并提供了从诊断到解决的完整方案。重点探讨了Gradle 8.2.2与Kotlin 1.9.x的兼容性问题,包括JVM IR后端冲突、配置缓存问题及依赖版本对齐,并给出了详细的调试技巧与迁移至KSP的建议。

rrr55的博客 315

Excel VBA--按某一列拆分数据到多个文件

首先,将需要拆分的sheet命名为“明细”,接下来运行此代码,按提示操作即可。 在这里插入代码片 Sub chaifen() '定义变量类型 Dim sht, sh1, sh2 As Worksheet Dim k, i, j As Integer Dim irow As Integer Dim col As Integer Dim str As String '程序开始是要求输入按哪一列拆分数...

weixin_43650026的博客 5873

js|比较两个【嵌套对象/数组】是否相等(递归法+json法)

文章目录划重点!不能用==/===来判断对象相等方法一:通过JSON.stringfy(obj)来判断两个对象转后的字符串是否相等方法二:通过遍历+迭代深度比较 划重点!不能用==/===来判断对象相等 在js 判断相等常见的就是 == (等同)和===(恒等); ==, 两边值类型不同的时候,要先进行类型转换,再比较 ; ===,不做类型转换,类型不同的一定不等。 js中的对象是引用类型,...

敲敲的博客 7400

Altium AD20差分对走线设置方法

AD20的PCB差分对走线设置 1、原理图添加差分对 先在原理图中,讲要设置差分对的网络对添加网络标签。 名称前面的内容要相同,后缀用 _P 和 _N 加以区分。 最后使用 放置差分对,将两个网络标记。 2、编译,更改到PCB 编译,更新到PCB,确认差分对网络的出现。 验证更改,执行更改。将改动更新到PCB中。 PCB中,可通过 右下角 Panels - 调出 PCB 显示。来对已添加的差分对进行查看。 这时原本的走线有一点点小问题,需要删掉原来走线,设置差分对规则,并重新布线。

Mark_md的博客 3万+

php对比2个json,详解JS 比较两个Json对象的值是否相等的实例_javascript技巧

{var ggg=modeler.compObj(array1[i],array2[i]);if(!ggg){return false;}}}else{return false;}}else{throw new Error("argunment is error ;");}return true;};modeler.compObj=function(obj1,obj2)//比较两个对象是否相等,...

weixin_29941275的博客 604

NLP实战:如何用CoNLL-2003数据集快速提升命名实体识别模型性能(附完整代码)

本文详细介绍了如何利用CoNLL-2003公开数据集,通过深度剖析数据特点、构建鲁棒的数据预处理流水线、选择合适的模型架构(如BERT-CRF)以及优化训练策略,来系统性地提升命名实体识别(NER)模型的性能。文章提供了完整的代码示例,并分享了处理数据不均衡、标签对齐等核心挑战的实战技巧,帮助读者从理论到实践全面掌握NER任务。

cola5的博客 494

想在瑞芯微RK3588上跑视频分类模型?避开3D卷积这个坑,试试这几种NPU友好的方案

本文探讨了在瑞芯微RK3588上部署视频分类模型时如何避开3D卷积的性能陷阱,提供了三种NPU友好的替代方案:MobileNetV2+GRU组合、Temporal Shift Module(TSM)和帧级池化。这些方案在保持较高准确率的同时,充分利用RKNPU的硬件加速能力,显著提升推理效率。文章还分享了从模型转换到部署优化的完整流程和实战经验。

weixin_28724319的博客 418

php对比2个json,JavaScript_JS中如何比较两个Json对象是否相等实例代码,在js前端面试过程中,经常会 - phpStudy...

JS中如何比较两个Json对象是否相等实例代码在js前端面试过程中,经常会遇到这样的笔试题:JS中如何比较两个Json对象是否相等实例代码,下面小编抽点时间给大家整理下,一起看看吧。1.先准备三个工具方法,用于判断是否是对象类型,是否是数组,获取对象长度function isObj(object) {return object && typeof (object) == 'obje...

weixin_32822089的博客 404

WPS Office 2026免费安装指南:AI办公与安全使用全解析

办公软件作为数字化办公的核心工具,其基本原理是通过文档处理、数据计算和演示展示等功能模块满足用户日常办公需求。随着人工智能技术的发展,现代办公软件逐步集成AI能力,通过自然语言处理和数据分析算法提升工作效率。在技术价值层面,优秀的办公软件不仅需要保持格式兼容性和跨平台同步能力,更要注重用户数据安全防护。从应用场景来看,无论是个人文档编辑、企业报表分析还是团队协作演示,办公软件都发挥着关键作用。WPS Office 2026作为国产办公软件代表,深度融合AI助手功能,支持智能写作和数据分析,同时通过官方免费策

weixin_30599769的博客 734

java 比较两个json,JS中如何比较两个Json对象是否相等实例代码

在js前端面试过程中,经常会遇到这样的笔试题:JS中如何比较两个Json对象是否相等实例代码,下面小编抽点时间给大家整理下,一起看看吧。1.先准备三个工具方法,用于判断是否是对象类型,是否是数组,获取对象长度function isObj(object) {return object && typeof (object) == 'object' && Object.p...

weixin_39829236的博客 385

Nvidia Jetson平台 JP4.2.1版本GStreamer视频采集异常问题调试记录

Nvidia Jetson平台GStreamer in JP4.2.1不能采集但是 v4l2-ctl和 ffmpeg能正常采集视频。

jzwjzw19900922的博客 2127

【自适应滤波】自适应UKF,基于新息自适应调节Q和R,场景为雷达跟踪与滤波、MATLAB实现

本文提出了一种基于新息协方差匹配的自适应UKF(CM-AUKF)算法,用于解决噪声统计未知或时变场景下的目标跟踪问题。通过实时调整过程噪声协方差Q和观测噪声协方差R,CM-AUKF显著提升了跟踪精度和稳定性。仿真结果表明,相比传统UKF,CM-AUKF在位置和速度估计误差上分别降低了约50%和30%,且无需人工调参。该算法适用于无人机导航、雷达跟踪等动态环境,MATLAB代码可直接运行复现结果。自适应曲线显示算法能有效收敛到真实噪声参数,验证了其自适应能力。

985工科博士毕业,专攻定位、导航和滤波等算法研究。从业10年,主要使用MATLAB 330

json oracle 比对,详解JS 比较两个Json对象的值是否相等的实例

//比较数组是否相同modeler.compArray=function(array1,array2){if((array1&&typeof array1 ==="object"&&array1.constructor===Array)&&(array2&&typeof array2 ==="object"&&arra...

weixin_42359255的博客 204

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

js判断对象是否相等的简单方法

var obj = {a:'a'},obj1 = {b:'b'},obj2 = {a:'a'}; 就是使用JSON.stringify()先把对象转化成字符串,这样就可以啦 console.log(JSON.stringify(obj) == JSON.stringify(obj1));//false console.log(JSON.stringify(obj) == JSON.strin

John_jian_yo的博客 8733

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JS之比较两个对象是否相同

① 方法一:通过JSON.stringify(obj)来判断两个对象转后的字符串是否相等 优点:用法简单,对于顺序相同的两个对象可以快速进行比较得到结果缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会比较出错 ② 方法二: 较为简单的方法,如下 //比较2个对象是否相同 function isObjEqual(o1,o2){ var props1 = Object.getOwnPropertyNames(o1); var props2 = Object.getOwn

一片天空 7491

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

JavaScript中 如何判断两个对象是否相等? object类型作为JavaScript中的基本数据类型,也是实际前端开发中经常使用的一种数据类型。 对于数字(Number)、字符串(String)、Boolean类型等数据,判断其是否相等,使用 === 全等于符合即可判断。但是对于object类型的数据,进行判断时就需要多做一些处理。 常见的判断方法有: 方法一:   使用 JSON.stringify()方法,将对象转化为字符串。然后使用 “===” 判断即可: let obj1 = { a

lookingForw_4585的博客 1万+

如何判断JS中两个对象是否相等?

① 方法一:通过JSON.stringify(obj)来判断两个对象转后的字符串是否相等 优点:用法简单,对于顺序相同的两个对象可以快速进行比较得到结果 缺点:这种方法有限制就是当两个对比的对象中key的顺序不是完全相同时会比较出错 ② 方法二:Object.getownPropertyNames() 1.用Object.getOwnPropertyNames拿到对象的所以键名数组 2.比对键名数组的长度是否相等 3.比对键名对应的键值是否相等 缺点:对象属性是对象的情况要进行递归 未递归情况:

Dreamlandz的博客 4938

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

在日常开发中,判断两个数据是否相等是再常见不过的事,偶然回想起之前刚接触JS的时候,曾被一段代码困扰过,直接上代码来看看吧~~乍一看,这不就两个对象吗,然后判断是否相等,一个 ‘==’ 不就搞定咯。咋还扯出两种方法呢,而且答案还不一样?今天便总结一下如何去判断两个对象是否相等,给以前的自己上一课~~手动滑稽在判断两个值类型的数据是否相等时,便已足够完成任务,但当其遇到引用类型的数据时,就只能灰溜溜的跑了,原因则是因为当两个引用类型的数据在进行比较时,比较的是其在栈中的地址,而不是比较其在堆中的数据(哪怕数据

郊眠寺 3205

如何比较两个对象数组是否相等

let objArr = [{ nema: "123", age: "19" }, { name: "234", age: "22" }]; let obj2Arr = [{ nema: "123", age: "19" }, { name: "234", age: "22" }]; console.log(JSON.stringify(objArr) === JSON.stringify(obj2Arr)); //true

hl_Abel的博客 1295

如何正确判断两个对象是否相等?

引用比较:使用===操作符,仅适用于比较对象引用。JSON 字符串化:通过方法比较对象的字符串表示,适用于简单对象。深度比较:递归地比较对象的属性,适用于复杂对象。使用第三方库:如 Lodash 或其他深度比较库,处理各种复杂的比较需求。选择适当的方法取决于你的具体需求,如对象的复杂性、性能要求和特殊类型的处理。

dzhnb的博客 823

js如何判断两个数组是否相等

今天在实现一个需求的时候,需要去判断两个数组是否相等,看似简单的问题,实则还挺复杂。 首先我们知道数组是引用数据类型,在==或者===比较时,比较的是其地址值,所以[1,2] == [1,2] [1,2] === [1,2] 二者输出的都是false, 那么如何比较两个数组是否相等呢 1. toString()或者join(): 它们的原理都是将二者转换成字符串,针对某一些数组可以进行判断,如:[1,2,3].toString() === [1,2,3].toString() 和 [1...

qq_42132814的博客 9171
上一篇: js数组去重(方法集合)
下一篇: vue中修改了数据但视图无法更新的情况
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值