same::
js判断对象相同
梗概
- 在 JavaScript 中,Set集合 和 Map 判断对象相同的方式依赖于对象的引用而不是对象的内容。
- 因此,即使两个对象有相同的属性和值,JavaScript 仍然会将它们视为不同的对象,除非它们的引用是相同的。
- 如果你想判断对象的内容是否相同,你需要手动比较对象的属性和值。像
lodash这样的库提供了深度比较的方法(如_.isEqual),你也可以手动编写一个递归比较函数。或用[use::JSON.stringify]来对比具体说明
- 引用相同:当两个对象的引用是同一个对象时,
Set和Map会将它们视为相同。- 引用不同:即使对象的内容完全相同,如果它们的引用不同,
Set和Map会将它们视为不同的对象。示例
指向原始笔记的链接 const obj1 = { a: 1 }; const obj2 = { a: 1 }; const obj3 = obj1; const mySet = new Set(); mySet.add(obj1); mySet.add(obj2); mySet.add(obj3); console.log(mySet.size); // 输出 2,因为 obj1 和 obj3 是同一个引用,而 obj2 是不同的引用 const myMap = new Map(); myMap.set(obj1, 'Object 1'); myMap.set(obj2, 'Object 2'); myMap.set(obj3, 'Object 3'); console.log(myMap.size); // 输出 2,同样的原因,obj1 和 obj3 是同一个引用 console.log(myMap.get(obj1)); // 输出 'Object 3',因为 obj1 和 obj3 是同一个对象