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

js中的对象是引用类型   使用 == / === 已经无法判断两个对象的属性和值是否相等

函数封装

// 对比两个对象的值是否完全相等 返回值 true/false
let  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: "dyh",
	sex: "male",
	age: 18,
};

var obj2 = {
	name: "dyh",
	sex: "male",
	age: 18,
};

var obj3 = obj1; //obj1和ob3的指针指向了内存中的同一个地址

console.log(isObjectValueEqual(obj1, obj2)); //true

console.log(obj1 == obj3); // true

console.log(obj1 === obj3); // true

console.log(obj2 == obj3); // false

console.log(obj2 === obj3); // false

 

 

posted @   JackieDYH  阅读(5)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示