我尝试使用console.log
查看Set对象的属性(如size
)。但是如果我尝试在Set中记录键,我会得到一个空数组:
let mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(3);
let keys = Object.keys(mySet);
console.log(keys);
// Output: []
当我使用Map时会发生同样的事情:
let myMap = new Map();
myMap.set('1', 1);
myMap.set('2', 2);
myMap.set('3', 3);
let keys = Object.keys(myMap);
console.log(keys);
// Output: []
答案 0 :(得分:1)
为什么您希望它们可用作键? Set
和Map
规范从未承诺过它。使用相应的API可以获得键/值。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Map
答案 1 :(得分:0)
{Map, Set}.prototype.keys()
有另一种行为,它都返回一个新的Iterator对象,而不是一个带键的数组:
Map.prototype.keys()
返回一个新的Iterator对象,该对象包含插入顺序中Map对象中每个元素的键。
Set.prototype.keys()
与values()函数功能相同,并返回一个新的Iterator对象,该对象包含Set中每个元素的值 对象按插入顺序排列。