我试图应用一些示例来更好地理解 Map 和 Set 的区别,并且每个示例的行为似乎令人困惑。查看下面的示例和输出
map 示例:
let nameMap = new Map([
['name', 'stack'],
['name', 'overflow'],
['domain', 'technology']
]);
// iterate over keys (nameMap)
for (let name of nameMap) {
console.log(JSON.stringify(name));
}
输出:
["name","overflow"]
["domain","technology"]
设置示例:
let nameSet = new Set([
['name', 'stack'],
['name', 'overflow'],
['domain', 'technology']
]);
// iterate over keys (nameSet)
for (let name of nameSet) {
console.log(JSON.stringify(name));
}
输出:
["name","stack"]
["name","overflow"]
["domain","technology"]
- 我的问题是为什么 map 仅返回两个相似对象的第二次出现?
- Set 返回所有三个对象,即使前两个键和值相同,但它应该删除其中一个。
最佳答案
My question is why map returns only the second occurence of two similar objects?
因为Map包含一组键值对。每个键只能有一个值。在构造函数中,每个数组代表[key, value]
)。带有'name'
键的数据的第二位将覆盖第一个。
Set returns all three objects even though first two keys and values being same, while it supposed to delete one of them.
集合存储一组唯一值。每个数组(如 ['name', 'stack']
)都是一个值。
关于javascript - 尝试这个例子后,对 Javascript 中的 Maps 和 Set 的基础知识感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56804980/