gpt4 book ai didi

javascript - 期望 Maps 相等但结果不同

转载 作者:行者123 更新时间:2023-12-01 00:29:47 26 4
gpt4 key购买 nike

背景:

我是 typescript 新手,并尝试使用 map 。我有一个关于 map 的平等性。我搜了一下,没找到。

问题:

我在 TypeScript 3.5.1 中创建了两个简单的 Map,并尝试使用 === 运算符来查看它们是否相等,但结果对我来说很奇怪。

代码:

const myMap1: Map<string, number> = new Map([['a', 1]]);
const myMap2: Map<string, number> = new Map().set('a', 1);
console.log(myMap1 === myMap2);
// console output => false

地点:

我在以下位置运行了这段代码:

https://typescript-play.js.org/#code

您可以在这里查看我的代码:

https://typescript-play.js.org/#code/MYewdgzgLgBAtgTwLIEMAOBGAXDVaA80ATgJZgDmANDGAK5wBGApkQHwwC8NTA7rugAoA2kIDkKUdQwBdaQEoA3AChQkWIjwAmHHkJRSFanUYt2XML35oBcgHQQmUAeMkwMileAggANk1s+IOQCGugYnBxcoWiaHgD0cTCq3n4wILRQaBmc7ABmKD4OQA

结果:

预期:

正确

问题:为什么这两张 map 不同?

最佳答案

=== 对两个对象(包括两个 Map)进行引用相等性检查。换句话说,它正在查看两个对象是否实际上是同一个对象。它不会检查它们包含的内容来查看它们的所有属性是否相同。

const a = new Map();
const a2 = a;
const b = new Map();
console.log(a === a2); // true
console.log(a === b); // false

const c = {};
const c2 = c;
const d = {};
console.log(c === c2); // true
console.log(c === d); // false

如果您想检查两个 map 的内容是否相同,那么您需要自己实现,并且您还需要决定什么算作相等。它们在两张 map 中的顺序必须相同吗?与顺序无关的情况相比,这将具有不同的实现。

关于javascript - 期望 Maps 相等但结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58671750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com