Set.prototype.delete() 方法用于移除 Set 中指定值的元素,成功返回 true,失败返回 false;值需严格相等(SameValueZero),支持所有类型,对象须为同一引用。

Set.prototype.delete() 方法用于从 Set 对象中移除指定值的元素。它会返回一个布尔值:删除成功返回 true,未找到该值则返回 false。注意:它不会抛出错误,也不会影响 Set 的结构(比如不改变其他元素顺序)。
基本用法
调用方式很简单:set.delete(value),其中 value 是要删除的元素值。
- 删除存在的元素 → 返回 true
- 删除不存在的元素 → 返回 false
- 值必须严格相等(使用
SameValueZero算法,类似===,但NaN被视为与自身相等)
支持的数据类型
delete() 可以删除任意类型的元素,包括原始值和对象引用:
- 数字、字符串、布尔值、
null、undefined、Symbol、BigInt -
NaN可被正确识别并删除(new Set([NaN]).delete(NaN)返回 true) - 对象需是**同一个引用**才能删除成功(
delete({})总是 false,因为每次{}都是新对象)
常见注意事项
几个容易出错的地方需要留意:
立即学习“Java免费学习笔记(深入)”;
- 不能用索引删除(
Set没有索引概念,不支持类似数组的下标操作) - 删除后
size属性会立即更新 - 对已删除的元素重复调用
delete()不会报错,只是返回 false - 没有批量删除方法,如需删多个值,需循环调用或配合
forEach+ 条件判断
实用小例子
比如管理一组用户 ID,需要动态剔除某个用户:
const userIds = new Set([101, 202, 303, 404]);userIds.delete(202); // true
console.log(userIds.size); // 3
console.log(userIds.has(202)); // false


















