我有一个我想用 JavaScript 更新的Set,但我想不出任何可以让我更新其中值的东西。
const mySet = new Set([]);
mySet.add('hello');
mySet.add('hewwo');
mySet.add('henlo');
Run Code Online (Sandbox Code Playgroud)
我试过像这样的语法
mySet['hello'] = 'hello world',
mySet.hello = 'hello world', 和
mySet[0] = 'hello world'.
我也试过像这样修改值:
mySet.forEach(item => {
if (item === 'hello') {
item = 'hello world';
}
})
Run Code Online (Sandbox Code Playgroud)
到目前为止,没有什么对我有用。我想在普通数组上使用集合,因为它会自动防止重复项,但我应该自己添加逻辑吗?JavaScript如果我不能修改集合中的值,是否有很好的用例?
“修改”(原始)项目的唯一方法是将其从 Set 中删除,然后添加更改的项目。
const mySet = new Set([]);
mySet.add('hello');
mySet.add('hewwo');
mySet.add('henlo');
if (mySet.has('hello')) {
mySet.delete('hello');
mySet.add('hello world');
}
console.log(...mySet);Run Code Online (Sandbox Code Playgroud)
如果您想更改每个项目,请迭代每个项目,再次删除和添加,或者(可能更容易)将其转换为数组并.map转换为新的 Set。
虽然你可以做到这一点,但它仍然是一件很奇怪的事情。将 Set 视为无序集合很有用,它们可以单独添加或删除值。
集合有用的一个重要原因是在其中查找值是一种O(1)操作,与数组不同(查找需要O(n)时间)。