当前位置: 首页> 教育> 高考 > 扫码点餐微信小程序怎么样开通_公司名字寓意好的字_百度在全国有哪些代理商_软件开发公司联系方式

扫码点餐微信小程序怎么样开通_公司名字寓意好的字_百度在全国有哪些代理商_软件开发公司联系方式

时间:2025/7/17 1:24:38来源:https://blog.csdn.net/stone10086/article/details/146102758 浏览次数:0次
扫码点餐微信小程序怎么样开通_公司名字寓意好的字_百度在全国有哪些代理商_软件开发公司联系方式

在 JavaScript 中,判断两个对象是否内容相同需要深度比较(逐层递归对比所有属性和值)。以下是 3 种实战方案,根据场景选择:

一、JSON.stringify 法(适合简单对象)

function isEqualSimple(obj1, obj2) {return JSON.stringify(obj1) === JSON.stringify(obj2);
}// 示例
const a = { name: "John", age: 25 };
const b = { name: "John", age: 25 };
console.log(isEqualSimple(a, b)); // true

缺点:
1、无法处理 undefined、函数、Symbol 类型属性;
2、属性顺序不同会被误判为不相等(如 {a:1, b:2} vs {b:2, a:1});
3、遇到 循环引用 会直接报错

二、递归深度对比法

function deepEqual(obj1, obj2) {// 类型不同直接返回 falseif (typeof obj1 !== typeof obj2) return false;// 基本类型直接比较(含 null)if (typeof obj1 !== 'object' || obj1 === null || obj2 === null) {return obj1 === obj2;}// 处理特殊对象类型if (obj1 instanceof Date && obj2 instanceof Date) return obj1.getTime() === obj2.getTime();if (obj1 instanceof RegExp && obj2 instanceof RegExp) return obj1.toString() === obj2.toString();// 数组和对象需遍历属性const keys1 = Object.keys(obj1);const keys2 = Object.keys(obj2);if (keys1.length !== keys2.length) return false;for (const key of keys1) {if (!keys2.includes(key) || !deepEqual(obj1[key], obj2[key])) {return false;}}return true;
}// 示例
const obj1 = { name: "Alice", data: [1, { id: 1 }, new Date('2023-01-01')]
};
const obj2 = { data: [1, { id: 1 }, new Date('2023-01-01')], name: "Alice" 
};
console.log(deepEqual(obj1, obj2)); // true

三、使用现成工具库(生产环境推荐)

1. lodash.isEqual

import _ from 'lodash';const objA = { a: [2, { e: 3 }], b: [4] };
const objB = { b: [4], a: [2, { e: 3 }] };
console.log(_.isEqual(objA, objB)); // true

2. fast-deep-equal(性能优化版)

npm install fast-deep-equal
import { equal } from 'fast-deep-equal';const x = { a: 1, b: { c: new Date() } };
const y = { b: { c: new Date() }, a: 1 };
console.log(equal(x, y)); // true

总结选择建议:
• 简单数据 → JSON.stringify
• 生产环境复杂对象 → lodash.isEqual
• 高频次性能敏感场景 → fast-deep-equal
• 特殊需求(如不可变数据) → 手写递归 + 定制逻辑

关键字:扫码点餐微信小程序怎么样开通_公司名字寓意好的字_百度在全国有哪些代理商_软件开发公司联系方式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: