javascript 中的 set 原型通过 set.prototype 提供了一组用于操作集合实例的方法,理解它的关键在于掌握其核心方法(如 add、has、delete)的行为以及它与数组原型的区别。set 是一个值唯一的集合,其原型对象上的方法允许你向集合中添加元素、检查元素是否存在或从集合中移除元素,同时保持元素的插入顺序。

Set.prototype.add() 如何处理重复值
Set.prototype.add() 方法在添加已存在的值时不会改变集合,且返回集合本身以支持链式调用。这意味着多次添加相同的值只会保留一个实例,体现了 Set “唯一性”的核心特性。

const set = new Set(); console.log(set.add(1).add(1).size); // 输出: 1 console.log(set.has(1)); // 输出: true
Set.prototype.has() 的严格相等比较机制
Set.prototype.has() 使用“严格相等”算法(Same-value-zero algorithm)来判断值是否存在,这与 === 类似,但特别处理了 NaN(认为 NaN === NaN 为真)。因此,即使两个不同的 NaN 值在普通比较中不相等,它们在 Set 中也被视为同一个值。
立即学习“Java免费学习笔记(深入)”;

const set = new Set(); set.add(NaN); console.log(set.has(NaN)); // 输出: true console.log(set.size); // 输出: 1
基于 Set.prototype.delete() 返回值的具体问题
Set.prototype.delete() 方法在成功删除元素时返回 true,如果元素不存在则返回 false。这个返回值可以直接用于条件判断,以确定操作是否生效,而不需要依赖 has() 进行预检查。


















