JavaScript中的Set详解

254 阅读2分钟

前言

Set是js中的一种数据结构,它允许你存储唯一的值,并且可以保持插入顺序。

创建Set对象

可以使用new Set()语法来创建一个Set对象。Set对象可以接收一个可迭代对象作为参数,例如数组,并将其转换为Set对象。注意,Set中的元素是唯一的,重复的值会被忽略。

let s = new Set([1, 1, 2, 2, 3, 3]);
console.log(s); // Set {1, 2, 3}
console.log(s.size); // 3

访问Set对象

由于Set对象不是普通对象,因此不能通过使用方括号来访问成员。但是可以使用has()方法来检查Set中是否存在某个值。

console.log(s.has(1)); // true
console.log(s.has(4)); // false

修改Set对象

Set对象是不可修改的,一旦创建就无法直接修改其中的值。但是可以使用以下方法来添加和删除元素。

  • add(value):向Set对象中添加一个新的元素。
  • delete(value):从Set对象中删除指定的元素。
let x = new Set([1, 2, 3]);
x.add(4);
x.delete(1);
console.log(x); // Set {2, 3, 4}

清空Set对象

可以使用clear()方法来清空Set对象中的所有元素。

x.clear();
console.log(x); // Set {}

遍历Set对象

可以使用多种方式来遍历Set对象中的元素。

  • 使用forEach()方法进行遍历。这是在ES6之前只有数组拥有的方法,现在Set也可以使用它。

    x.forEach((item, key, set) => {
        console.log(item, key, set);
    });
    
  • 使用for...of循环进行遍历。for...of循环用于遍历具有迭代器属性(Iterator)的对象。

    for (let value of x.values()) {
        console.log(value);
    }
    
    for (let value of x.keys()) {
        console.log(value);
    }
    
  • 使用entries()方法返回键值对的遍历。entries()返回二维数组,每个子数组包含键和值的对应关系。

    for (let item of x.entries()) {
        console.log(item);
    }
    

以上就是Set对象的创建、访问、修改、清空和遍历操作,使用Set可以轻松管理唯一的值集合,并且可以保持插入顺序。