在 JavaScript 中,使用严格相等运算符确定对象相等性仅揭示对象类型的相等性。这就提出了一个问题:是否存在类似于 Java 的哈希码值的机制来确定对象相等性。
JavaScript 中是否有等效的 HashCode?
类似的查询Stack Overflow 上的文章(“JavaScript 中是否有任何类型的 hashCode 函数?”)强调了对解决方案的需求。下面的场景进一步说明了必要性:
const obj1 = { name: "John Doe", age: 25 }; const obj2 = { name: "John Doe", age: 25 }; console.log(obj1 === obj2); // false (different memory references)
等效解决方案
幸运的是,JavaScript 以 lodash 库的形式提供了解决方案。它提供 isEqual() 函数,该函数:
const { isEqual } = require('lodash'); const result = isEqual(obj1, obj2); // true (objects are equal)
Lodash 强力比较每个键值对,采用 ECMAScript 5 性能优化。请注意,这个答案之前推荐的是 Underscore.js,但 Lodash 在错误修复和一致性方面已经超越了它。
以上是JavaScript 是否有相当于对象相等性的 HashCode?的详细内容。更多信息请关注PHP中文网其他相关文章!