gpt4 book ai didi

javascript - Set() 作为 Javascript 对象的键

转载 作者:行者123 更新时间:2023-11-29 20:34:40 25 4
gpt4 key购买 nike

在 JavaScript 中,我尝试以下操作:

let set1 = new Set([1]);
let set2 = new Set([2]);
let obj = {};
console.log("obj[set2] gives: ", obj[set2]);
obj[set1] = "Should be set1";

console.log(obj);
console.log("obj[set2] gives: ", obj[set2]);

它似乎没有将 Set 对象视为键,而是使用字符串“[object Set]”作为键,因此如果用作键,则所有 Set 都相同。为什么这是正确的行为?有没有一种方法可以使用 Set 作为对象的键,这样我就可以查找与特定 Set 关联的值?谢谢!

最佳答案

对象键只能是字符串(或符号,很少见)。如果您尝试分配一个不是字符串的键,它将在被放入对象之前被转换为一个字符串。

看看当您尝试将 Set 转换为字符串时会发生什么:

let set1 = new Set([1]);
let set2 = new Set([2]);
console.log(
String(set1),
String(set2)
);

无论集合包含什么,在转换为字符串时,您都会得到[object Set]。所以,正如预期的那样:

obj[set1]           ===  obj[set2]
obj['[object Set]'] === obj['[object Set]']

如果你想使用非字符串键,你应该使用一个映射,它的“键”可以是任何值,而不仅仅是字符串:

let set1 = new Set([1]);
let set2 = new Set([2]);
const map = new Map();
console.log("obj[set2] gives: ", map.get(set2));
map.set(set1, "Should be set1");
console.log("obj[set2] gives: ", map.get(set2));

关于javascript - Set() 作为 Javascript 对象的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57032876/

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