方法如下:
function isObjectValueEqual(a, b) {
//取对象a和b的属性名
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
//判断属性名的length是否一致
if (aProps.length != bProps.length) {
return false;
//循环取出属性名,再判断属性值是否一致
for (var i = 0; i < aProps.length; i++) {
var propName = aProps[i];
if (a[propName] !== b[propName]) {
return false;
return true;
var obj1 = { name: "Benjamin", sex : "male"};
var obj2 = { name: "Benjamin", sex : "male"};
var obj3 = obj1;//obj1和ob3的指针指向了内存中的同一个地址
console.log(isObjectValueEqual(obj1, obj2));//true
console.log(obj1 == obj3);//Outputs: true
console.log(obj1 === obj3);//Outputs: true
console.log(obj2 == obj3);//Outputs: false
console.log(obj2 === obj3);//Outputs: false
本文实例讲述了JavaScript比较
两个
对象
是否
相等
的方法。分享给大家供大家参考。具体如下:
在Python中可以通过cmp()内建函数来比较
两个
对象
所包涵的数据
是否
相等
(数组、序列、字典)。但是在javascript语言中并没有相关的实现。本
js
代码通过对
js
对象
进行各方面的比较来
判断
两个
对象
是否
相等
cmp = function( x, y ) {
// If both x and y are null or undefined and exactly the same
if ( x === y ) {
return true;
// If they are not stric
2. Object.getOwnPropertyNames() 获取
对象
的可枚举和不可枚举属性
3. Object.getOwnPropertySymbols() 获取
对象
的symbol属性
4. Object.keys() 获取
对象
的可枚举属性
5. for...in 获取
对象
自身和继承的可枚举属性(配合hasOwnProperty()使用)
6. for...of 获取
对象
自身可...
前言:如何
判断
两个
对象
是否
相等
?
两个
Object类型
对象
,即使拥有相同属性、相同
值
,当使用 == 或 === 进行比较时,也不认为他们
相等
。这就是因为他们是通过引用(内存里的位置)比较的,不像基本类型是通过
值
比较的。
var obj1 = {
name: "xiaoming",
sex : "male"
var obj2 = {
name: "xiaoming...
// 返回
值
类型boolean
function ObjectEquel(obj1,obj2){
let a = Array.from(new Map(Object.entries(obj1)))
let b = Array.from(new Map(Object.entries(obj2)))
let i = 0
a.forEach((item,index)=>{
if(b[inde
console.log(obj1===obj2)
打印都为false,虽然他们模样一样,当需要
判断
对象
的形状和内容都一样的时候,就比如上面的obj1、obj2,怎么办呢?它来了
完整代码:
//
判断
两个
对象
是否
相同(包含绝对
相等
和他们
是否
function isObjectValueEqual(a, b) {
var aProps = Object.getOwnPropertyNames(a);
var bProps = Objec.
function isObjectValueEqual(a, b) {
var aProps = Object.getOwnPropertyNames(a);
var bProps = Object.getOwnPropertyNames(b);
if (aProps.length...
最近项目中有遇到在点击切换按钮的时候,要
判断
当前页面的数据有没有发生修改,如果发生了修改,则提示
是否
保存的功能。
刚开始觉得很麻烦,后来想了一个办好,将页面初始化和点击切换时的数据写成li
在日常开发中,
判断
两个
数据
是否
相等
是再常见不过的事,偶然回想起之前刚接触
JS
的时候,曾被一段代码困扰过,直接上代码来看看吧~~乍一看,这不就
两个
对象
吗,然后
判断
是否
相等
,一个 ‘==’ 不就搞定咯。咋还扯出两种方法呢,而且答案还不一样?今天便总结一下如何去
判断
两个
对象
是否
相等
,给以前的自己上一课~~手动滑稽在
判断
两个
值
类型的数据
是否
相等
时,便已足够完成任务,但当其遇到引用类型的数据时,就只能灰溜溜的跑了,原因则是因为当
两个
引用类型的数据在进行比较时,比较的是其在栈中的地址,而不是比较其在堆中的数据(哪怕数据
① 方法一:通过
JS
ON.stringify(obj)来
判断
两个
对象
转后的字符串
是否
相等
优点:用法简单,对于顺序相同的
两个
对象
可以快速进行比较得到结果缺点:这种方法有限制就是当
两个
对比的
对象
中key的顺序不是完全相同时会比较出错
② 方法二:
较为简单的方法,如下
//比较2个
对象
是否
相同
function isObjEqual(o1,o2){
var props1 = Object.getOwnPropertyNames(o1);
var props2 = Object.getOwn