答案:J*aScript中判断对象相同需用深度比较。1. JSON.stringify适用于简单对象但有局限;2. 手动递归实现可处理嵌套结构;3. Lodash的isEqual最可靠,支持复杂类型;4. 自定义方法可扩展支持Date、Array等。根据场景选择方案。

在 J*aScript 中,并没有原生的 isSame 方法来判断两个对象是否相同。但你可以通过多种方式实现对象的深度比较,判断它们是否“相等”或“相同”。下面介绍几种常见且实用的方法。
将对象转为字符串后进行比较:
示例:
function isSame(a, b) {
return JSON.stringify(a) === JSON.stringify(b);
}
const obj1 = { name: 'Alice', age: 25 };
const obj2 = { name: 'Alice', age: 25 };
console.log(isSame(obj1, obj2)); // true
注意:这种方法有明显缺陷:属性顺序不同会导致 false;函数、undefined、Symbol 会被忽略;Date 对象会变成字符串。
递归比较对象的每个属性:
function isSame(a, b) {
if (a === b) return true;
if (a == null || b == null) return a === b;
if (typeof a !== 'object' || typeof b !== 'object') return false;
const keysA = Object.keys(a);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) return false;
for (const key of keysA) {
if (!b.hasOwnProperty(key)) return false;
if (!isSame(a[key], b[key])) return false;
}
return true;
}
支持:普通对象、数组、嵌套结构。
不支持:Date、RegExp、Map、Set 等特殊类型(可扩展)。
LALAL.AI
AI人声去除器和声乐提取工具
196
查看详情
Lodash 提供了 _.isEqual 方法,用于深度比较:
const _ = require('lodash');
const obj1 = { user: 'Bob', info: { age: 30 } };
const obj2 = { user: 'Bob', info: { age: 30 } };
console.log(_.isEqual(obj1, obj2)); // true
支持函数、日期、正则、循环引用等复杂情况,适合项目中使用。
加入对 Date 和 Array 的特殊判断:
function isSame(a, b) {
if (a === b) return true;
if (a instanceof Date && b instanceof Date)
return a.getTime() === b.getTime();
if (Array.isArray(a) && Array.isArray(b)) {
if (a.length !== b.length) return false;
for (let i = 0; i < a.length; i++) {
if (!isSame(a[i], b[i])) return false;
}
return true;
}
if (typeof a !== 'object' || typeof b !== 'object' || a == null || b == null)
return false;
const keysA = Object.keys(a);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) return false;
for (const key of keysA) {
if (!b.hasOwnProperty(key)) return false;
if (!isSame(a[key], b[key])) return false;
}
return true;
}
基本上就这些。根据你的使用场景选择合适的方法:小项目可用 JSON.stringify 或手写 isSame,大型项目建议用 Lodash 的 isEqual。关键是理解对象比较的本质是“值的深层一致性”,而不是引用相等。
以上就是js isSame判断对象是否相同的详细内容,更多请关注其它相关文章!
# 可以通过
# 赫章营销抖音推广公司
# 广州网站优化排名公司
# 延庆区省电网站建设风格
# 超市营销推广员岗位职责
# seo优化网站关键字
# 网站在哪些平台推广
# 晋中专业关键词排名查询
# 公司竞争力网站建设
# 沙洋seo优化怎么做
# 哈密优化排名seo
# 中文网
# javascript
# 相关文章
# 扁平化
# 服务端
# 源代码
# 自定义
# 适用于
# 有什么
# 递归
# json
# js
# java
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
网站体验不好=浪费钱:如何提升-用户体验效果差
服装短视频如何起号推广?服装短视频起号推广有什么要求?
Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法
泰拉瑞亚水晶无法放置问题
解决CSS容器溢出问题:使用calc()实现精确布局与边距控制
《深林》冬季章节图文攻略
百度输入法在AutoCAD中无法输入中文怎么办_百度输入法CAD输入异常解决方法
word文档行距怎么调?word文档调行距的操作步骤
TikTok收藏夹无法删除视频如何解决 TikTok收藏管理优化方法
如何在CSS中实现盒模型多列间距_grid-gap与padding结合
Python中处理嵌套字典与列表的数据提取与过滤教程
2025SNH48年度青春盛典门票价格及购买方式
Flexbox布局实践:实现底部页脚与顶部粘性导航条的完美结合
《百度畅听版》关闭兴趣推荐方法
《画加》约稿流程
vivo手机视频通话美颜怎么设置_vivo视频通话美颜开启方法
Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】
PHP中动态类名访问的类实例类型提示与静态分析实践
喜茶GO更换登录账号方法
12306不能订票的时间段是固定的吗? | 节假日购票时间有无变化
作业帮网页版不用下载入口 在线问老师快速答疑
键盘保修需要什么_键盘售后维修流程
sublime怎么在文件中显示代码结构大纲_sublime符号列表功能
研招网官方网站正版登录网址_中国研究生招生信息网官网首页
使用document.execCommand实现Web文本编辑器加粗/取消加粗
Go语言中方法接收器的选择:值类型还是指针类型?
OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南
企查查官网和爱企查 企查查企业查询官网入口
《优志愿》修改手机号方法
红手指专业版app注册教程
《蓝色星原:旅谣》坐骑获取攻略
青橙手机语音助手怎么唤醒_青橙手机语音助手设置与唤醒方法
Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置
Vue 3中独立响应式实例的创建与应用
J*aScript对象中深度嵌套URL键的查找与更新策略
windows10怎么开启wsl_windows10安装linux子系统教程
《盗墓笔记手游》技能介绍
谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法
抖音团长模式怎么做?团长模式是什么意思?
海棠阅读网页版_进入海棠网页版在线阅读中心
Win10输入法不见了怎么办 Win10找回语言栏图标教程
菜鸟裹裹怎样获得取件码_菜鸟裹裹获得取件码步骤
荣耀 Magic10 Pro 系统更新提示失败_荣耀 Magic10 Pro 升级修复
鲁班大师乓乓皮肤获取方法
PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角
《海底捞》点外卖方法
百度识图图像分析 百度识图识别平台
PDF文件去水印平台入口 PDF水印删除网址
告别繁琐SEO!如何使用SyliusSitemap插件自动化生成网站地图,提升搜索引擎排名
12306APP选座怎么选充电位置_12306APP带充电插座座位选择方法与技巧
2025-11-11
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。