UNPKG

own-js

Version:

自家前端交流在项目开发中构建的JS工具库,内含项目中最常用的JS工具函数

31 lines (30 loc) 1.38 kB
// 用递归实现比较任意两个数据 // 只对普通对象、数组、函数、日期和基本类型的数据结构进行对比 // 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]))) // }