当前位置: 代码网 > it编程>编程语言>Javascript > javascript中的set的常用方法和操作

javascript中的set的常用方法和操作

2024年11月25日 Javascript 我要评论
前言在 javascript 中,set是一种内置的数据结构,用于存储唯一值的集合。set对象允许你存储任意类型的值,无论是基本类型还是对象类型。以下是set的常用方法和操作:1. 创建一个set:你

前言

在 javascript 中,set 是一种内置的数据结构,用于存储唯一值的集合。set 对象允许你存储任意类型的值,无论是基本类型还是对象类型。以下是 set 的常用方法和操作:

1. 创建一个 set:

你可以通过 new set() 来创建一个新的 set 对象。

const myset = new set();

2. 向 set 中添加元素:

使用 .add() 方法可以向 set 中添加元素。

myset.add(1);       // set { 1 }
myset.add(5);       // set { 1, 5 }
myset.add(1);       // set { 1, 5 } (1 已经存在,不会重复添加)
myset.add('hello'); // set { 1, 5, 'hello' }

3. 检查 set 中是否存在某个值:

使用 .has() 方法来检查一个值是否在 set 中。

console.log(myset.has(1));    // true
console.log(myset.has(10));   // false

4. 删除 set 中的元素:

使用 .delete() 方法可以删除某个元素。

myset.delete(5);    // true
console.log(myset); // set { 1, 'hello' }

5. 获取 set 的大小:

使用 .size 属性可以获得 set 的元素数量。

console.log(myset.size); // 2

6. 清空 set:

使用 .clear() 方法可以清空 set 中的所有元素。

myset.clear();
console.log(myset.size); // 0

7. 遍历 set:

你可以使用 foreach() 或 for...of 循环来遍历 set

ps:[1, 2, 3, 'a', 'b']为一个数组。

const anotherset = new set([1, 2, 3, 'a', 'b']);

// 使用 foreach 遍历
anotherset.foreach(value => {
  console.log(value);
});

// 使用 for...of 遍历
for (let value of anotherset) {
  console.log(value);
}

8. set 和数组的转换:

你可以很容易地将 set 转换为数组,或者将数组转换为 set

// set 转换为数组
const setarray = [...anotherset]; // [1, 2, 3, 'a', 'b']

// 数组转换为 set
const array = [1, 2, 2, 3, 4];
const arrayset = new set(array); // set { 1, 2, 3, 4 }

9. 去重数组中的重复值:

利用 set 的唯一性,你可以快速去除数组中的重复项。

const numbers = [1, 2, 3, 3, 4, 5, 5];
const uniquenumbers = [...new set(numbers)]; // [1, 2, 3, 4, 5] 首先将数据转换为set,再将set转换为数组。

set和map的区别:

1. 存储类型:

  • set:只存储唯一值,不存储键值对。每个元素都是一个值,且不能重复。

    const myset = new set(); 
    myset.add(1); 
    myset.add(2); 
    myset.add(2); // 无法添加重复的值 
    console.log(myset); // set { 1, 2 }
  • map:存储的是键值对。每个元素都有一个键和一个对应的值,键可以是任何类型(包括对象)。

    const mymap = new map(); 
    mymap.set('key1', 'value1'); 
    mymap.set('key2', 'value2'); 
    console.log(mymap); // map { 'key1' => 'value1', 'key2' => 'value2' }

2. 元素的唯一性:

  • set:不能存储重复的值。set 会确保集合中的每个元素都是唯一的。

    const set = new set([1, 1, 2, 3]); 
    console.log(set); // set { 1, 2, 3 } (1 不会重复)
  • map:键必须是唯一的,但不同的键可以对应相同的值。map 中允许重复的值,只要键不同。

    const map = new map(); 
    map.set('a', 1); 
    map.set('b', 1); // 相同的值,键不同 
    console.log(map); // map { 'a' => 1, 'b' => 1 }

3. 键和值的使用:

  • set:只有值,没有键。每个值在 set 中都是唯一的元素。

    const set = new set([1, 2, 3]); 
    set.foreach(value => console.log(value)); // 遍历的是值
  • map:每个元素都有键和值,使用 .set(key, value) 来添加键值对,用 .get(key) 来获取对应的值。

    const map = new map(); 
    map.set('name', 'alice'); 
    map.set('age', 30); 
    console.log(map.get('name')); // 'alice'

4. 迭代:

  • set:遍历 set 时,你只能遍历值。

    const set = new set([1, 2, 3]); 
    for (let value of set) { 
      console.log(value); // 1, 2, 3 
    }
  • map:遍历 map 时可以遍历键、值或者键值对。

    const map = new map([['key1', 'value1'], ['key2', 'value2']]); // 遍历键 
    for (let key of map.keys()) { 
      console.log(key); // key1, key2 
    } // 遍历值 
    for (let value of map.values()) { 
      console.log(value); // value1, value2 
    } // 遍历键值对 
    for (let [key, value] of map.entries()) { 
      console.log(key, value); // key1 value1, key2 value2 
    }

5. 方法:

  • set

    • .add(value):向 set 中添加值。
    • .delete(value):删除 set 中的值。
    • .has(value):检查 set 中是否有某个值。
    • .clear():清空 set
    • .size:获取 set 的大小。
  • map

    • .set(key, value):向 map 中添加键值对。
    • .get(key):通过键获取对应的值。
    • .delete(key):删除某个键值对。
    • .has(key):检查 map 中是否有某个键。
    • .clear():清空 map
    • .size:获取 map 的大小。

6. 使用场景:

  • set:适用于处理唯一值集合的场景,如数组去重、存储一组无重复的值。

    const uniquevalues = new set([1, 2, 2, 3, 4]); // set { 1, 2, 3, 4 }
  • map:适用于需要键值对存储的场景,如缓存、字典、关联数组等。

    const dictionary = new map(); 
    dictionary.set('apple', 'a fruit'); 
    dictionary.set('car', 'a vehicle');

总结:

  • set 用于存储唯一的值集合,没有键。
  • map 用于存储键值对,键和值都可以是任意类型。

到此这篇关于javascript中的set的常用方法和操作的文章就介绍到这了,更多相关js中set用法内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com