own-js
Version:
自家前端交流在项目开发中构建的JS工具库,内含项目中最常用的JS工具函数
31 lines (30 loc) • 1.38 kB
text/typescript
// 用递归实现比较任意两个数据
// 只对普通对象、数组、函数、日期和基本类型的数据结构进行对比
// function isDeepEqual(obj1, obj2, testPrototypes = false) {
// // 判断是不是基本类型
// if (obj1 === obj2) {
// return true
// };
// // 如果是函数
// if (typeof obj1 === "function" && typeof obj2 === "function") {
// return obj1.toString() === obj2.toString()
// };
// // 如果是时间对象
// if (obj1 instanceof Date && obj2 instanceof Date) {
// return obj1.getTime() === obj2.getTime()
// };
// // 区分非基础数据类型
// if (
// Object.prototype.toString.call(obj1) !== Object.prototype.toString.call(obj2) || typeof obj1 !== "object") {
// return false
// };
// // 获取指定对象的原型对象
// const prototypesAreEqual = testPrototypes ?
// isDeepEqual(Object.getPrototypeOf(obj1), Object.getPrototypeOf(obj2), true) : true;
//
// // 获取两个对象的键值数组
// const obj1Props = Object.getOwnPropertyNames(obj1)
// const obj2Props = Object.getOwnPropertyNames(obj2)
// // 判断两个对象键值数组长度是否一致 遍历对象键值且键值是否相等
// return (obj1Props.length === obj2Props.length && prototypesAreEqual && obj1Props.every(prop => isDeepEqual(obj1[prop], obj2[prop])))
// }