Set.prototype.delete()

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

Set 实例的 delete() 方法会从该集合中移除指定的元素(如果该元素存在于集合中)。

试一试

const set = new Set();
set.add({ x: 10, y: 20 }).add({ x: 20, y: 30 });

// Delete any point with `x > 10`.
set.forEach((point) => {
  if (point.x > 10) {
    set.delete(point);
  }
});

console.log(set.size);
// Expected output: 1

语法

js
setInstance.delete(value)

参数

value

要从 Set 对象中移除的值。对象通过引用比较,而不是按值比较。

返回值

如果 Set 对象中的某个值已被成功移除,则返回 true。如果未在 Set 中找到该值,则返回 false

示例

使用 delete()

js
const mySet = new Set();
mySet.add("foo");

console.log(mySet.delete("bar")); // false; no "bar" element found to be deleted.
console.log(mySet.delete("foo")); // true; successfully removed.

console.log(mySet.has("foo")); // false; the "foo" element is no longer present.

从集合中删除对象

由于对象是按引用比较的,如果你没有原始对象的引用,你需要通过检查单个属性来删除它们。

js
const setObj = new Set(); // Create a new set.

setObj.add({ x: 10, y: 20 }); // Add object in the set.

setObj.add({ x: 20, y: 30 }); // Add object in the set.

// Delete any point with `x > 10`.
setObj.forEach((point) => {
  if (point.x > 10) {
    setObj.delete(point);
  }
});

规范

规范
ECMAScript® 2026 语言规范
# sec-set.prototype.delete

浏览器兼容性

另见