首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js set的长度

在JavaScript中,Set 是一种特殊的类型,用于存储 唯一 的值,无论是原始值还是对象引用。Set 对象允许你存储 唯一 的值,无论是原始值或者是对象引用。

基础概念

  • 创建Set: 可以通过 new Set() 来创建一个新的Set对象,也可以在创建时传入一个可迭代对象(如数组)来初始化Set。
  • 创建Set: 可以通过 new Set() 来创建一个新的Set对象,也可以在创建时传入一个可迭代对象(如数组)来初始化Set。
  • 添加和删除元素: 使用 add(value) 方法可以向Set添加元素,使用 delete(value) 方法可以从Set中删除元素。
  • 检查元素是否存在: 使用 has(value) 方法可以检查Set中是否存在某个元素。
  • 获取Set的长度: 使用 size 属性可以获取Set中元素的数量。

Set的长度

Set 的长度可以通过其 size 属性来获取。例如:

代码语言:txt
复制
const mySet = new Set([1, 2, 3, 4]);
console.log(mySet.size); // 输出: 4

优势

  • 唯一性: Set自动确保其中的元素唯一,这在需要去重的场景下非常有用。
  • 性能: 在频繁添加、删除元素的场景下,Set的性能通常优于数组。
  • 简洁的语法: Set提供了简洁的方法来处理集合相关的操作。

应用场景

  • 去重: 当你需要从数组或其他可迭代对象中去除重复项时,Set非常有用。
  • 去重: 当你需要从数组或其他可迭代对象中去除重复项时,Set非常有用。
  • 集合运算: Set可以用于执行数学上的集合运算,如并集、交集和差集。

遇到的问题及解决方法

问题: 如果尝试获取一个未初始化的Set的长度,会得到什么结果?

答案: 如果Set未被初始化或者没有添加任何元素,使用 size 属性获取的长度将是 0

问题: 如何有效地从一个数组中移除重复项?

解决方法: 可以利用Set的唯一性特性来移除数组中的重复项,如上所示的 uniqueArray 示例。

问题: Set是否可以存储对象,并且如何检查对象是否存在于Set中?

答案: 是的,Set可以存储对象。但是需要注意的是,Set中的对象比较是基于引用的,而不是基于值的。这意味着即使两个对象具有相同的属性和值,它们也被视为不同的对象,除非它们引用的是同一个内存地址。

代码语言:txt
复制
const set = new Set();
const obj1 = { firstName: "John", lastName: "Smith" };
const obj2 = { firstName: "John", lastName: "Smith" };
set.add(obj1);

console.log(set.has(obj1)); // 输出: true
console.log(set.has(obj2)); // 输出: false,因为obj1和obj2是不同的引用

如果需要基于对象的值来检查是否存在,可能需要使用其他方法,例如将对象序列化为字符串后再存储和比较。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

js中set和map的区别_list和set

Map对象的属性: size:返回Map对象中所包含的键值对个数 Map对象的方法: set(key, val): 向Map中添加新元素 get(key): 通过键值查找特定的数值并返回 has(key...Set Set 对象允许你存储任何类型的值,无论是原始值或者是对象引用。它类似于数组,但是成员的值都是唯一的,没有重复的值。 Set 本身是一个构造函数,用来生成Set 数据结构。...Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。 Set中的特殊值: Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。...{} {} 两个空对象的指针不一样,所以会重复 Set实例对象的属性: size:返回Set实例的成员总数。....都能通过迭代器进行for…of遍历; 4.Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储 5.map和set都是stl中的关联容器,map以键值对的形式存储,key=value

3.1K20
  • js中Set基本使用

    ECMAScript 6 新增的 Set 是一种新集合类型,为这门语言带来集合数据结构。Set 在很多方面都像是加强的 Map,这是因为它们的大多数 API 和行为都是共有的。 基本API 1....创建Set实例 使用 new 关键字和 Set 构造函数可以创建一个空集合: const s = new Set(); 如果想在创建的同时初始化实例,则可以给 Set 构造函数传入一个可迭代对象,其中需要包含插入到新集合实例中的元素...(Set 可以包含任何 JavaScript 数据类型作为值): const s = new Set(["val1", 1, true, {}, undefined, function fun() {}...]); 注意:Set结构不会添加重复的值 const s = new Set([1, 1, 2, 3, 4, 4, 5, 6, 7, 4, 2, 1]); Array.from(s); // [1,...Set实例转数组 const s = new Set([1, 2, 3]); Array.from(s); // [1, 2, 3] 3. size属性 size: 获取Set实例的元素个数: const

    2.6K30

    JS 中的 (Weak)Set 和 (Weak)Map

    Set 和 Map 都是 ES6 新增数据结构。 Set Set 是一个集合,它类似于数组,但是成员的值都是唯一的,没有重复的值。它允许你存储任何类型的唯一值,无论是原始值或者是对象引用。...Set 是一个构造函数,它有一个可选的参数一个可迭代对象。如果传递了这个参数它的所有元素将不重复地被添加到新的 Set中。如果不指定此参数或其值为null,则新的Set为空。...它返回一个新的Set实例。...Set 原型方法 Set 一共有 9 个原型方法。 add(value) 用来向一个Set对象的末尾添加一个指定的值,它返回Set对象本身。...它和 JS 对象不同,JS 对象只能用字符串和Symbol作为键,而Map可以使用任何值。 除了键类型上的不同,它和Object还有以下不同: Map中的键值是有序的,而添加到对象中的键则不是。

    2.1K20

    JS基础:Map和Set对象

    本文是 重温基础 系列文章的第十一篇。 今日感受:注意身体,生病花钱又难受。 本章节复习的是JS中的Map和Set对象,是个集合。...前置知识: Map和Set对象是在ES6中被引入的,作为一种由 key值标记的数据容器。 Map和Set对象承载的数据元素可以按照插入时的顺序,被迭代遍历。...1 Set对象 介绍: Set数据结构类似数组,但所有成员的值唯一。 Set本身为一个构造函数,用来生成 Set数据结构,使用 add方法来添加新成员。...([1,2,3,4,4,4])];// [1,2,3,4] 注意: 向 Set中添加值的时候,不会类型转换,即 5和 '5'是不同的。...博 客 www.pingan8787.com 微 信 pingan8787 每日文章推荐 https://github.com/pingan8787/Leo_Reading/issues ES小册 js.pingan8787

    12.4K31

    js中settimeout和setInterval区别_JavaScript set

    JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。...两个方法的第二个参数是milliseconds,表示延时或者重复执行的毫秒数。 下面分别介绍两种方法。...而使用字符串形式可以达到想要的结果: window.setTimeout(“hello(userName)”,3000); 这里的字符串是一段JavaScript代码,其中的userName表示的是变量...window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。...JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似。setTimeout 运用在延迟一段时间,再进行某项操作。

    1.9K10

    js入门(ES6)---认识Symbol、Map、 Set

    认识Symbol、Map、 Set、Proxy Symbol 用法 方法 Symbol.for() Symbol.keyFor() 使用场景 Map 用法 添加/删除 迭代 合并Map Set...Symbol.keyFor() 输入一个字符串 返回一个已登记的名字为该字符串的Symbol类型的值 ,可以检测该Symbol 值是否已被登 如果没有 ? ? 如果有 ? ?...存储任何类型的值或者对象 用法 let mySet = new Set(); 添加/删除 添加 mySet.add(value); value具有唯一性 mySet.add(2); mySet.add...console.log(data) 就是在设置值的时候 对a添加一个过滤器,过滤元素余数不为0的数值 ?...后续会推出 每个平台的详细搭建过程 前端:js入门 vue入门 vue开发小程序 等 后端: java入门 springboot入门等 服务器:mysql入门 服务器简单指令 云服务器运行项目

    1.7K30

    set跟map的区别_oracle set用法

    1.Map是键值对,Set是值的集合,当然键和值可以是任何的值; 2.Map可以通过get方法获取值,而set不能因为它只有值; 3.都能通过迭代器进行for…of遍历; 4.Set的值是唯一的可以做数组去重...set只有值,可以认为只有一个数据,并且set中元素不可以重复且自动排序。 Set Set对象允许你存储任何类型的值,无论是原始值或者是对象引用。它类似于数组,但是成员的值都是唯一的,没有重复的值。...Set 本身是一个构造函数,用来生成Set 数据结构。Set函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化。...Set中的特殊值 Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。...Set实例对象的属性 size:返回Set实例的成员总数 Set实例对象的方法 add(value):添加某个值,返回 Set 结构本身(可以链式调用)。

    77140

    【JS ES6】了解学习set类型和weakset类型

    作者主页: 作者主页查看更多前端教学 专栏分享:css重难点教学 Node.js教学 从头开始学习 ajax学习 目录 set类型与array和object的区别 set元素检测与管理 类型转换的重要性...遍历set类型的方式 使用set处理网站关键字 并集交集差集 WeakSet语法介绍 引用类型的垃圾回收原理 列表删除案例 set类型与array和object的区别 set类型跟数组一样可以放多个值...,但是set类型中的值不能重复。...元素检测与管理 //获取长度 console.log(set.size);//2 //判断是否包含 console.log(set.has('xiaoxie'));//true console.log...);//1 //清空元素 console.log(set.clear());//undefined console.log(set.size);//0 类型转换的重要性 let set = new Set

    53230

    javascript数组去重set方法_js数组去重api

    大家好,又见面了,我是你们的朋友全栈君。...数组去重的几种方法 1.遍历数组法 ---- 这是最简单的数组去重方法,实现思路:新建一新数组,传入要去重的数组,遍历该数组,若值不在新数组中则加入该数组;需要注意点:判断值是否在数组的方法“indexOf...,判断值是否为js对象的键,若不是则新增键值,并放入数组中;需要注意的地方:判断是否为js对象键时,会自动对传入的键toString(); function removeDup2(arr) {...false : (obj[type] = item); } ) } // 可去除undefined, NaN, Object重复项 4.ES6,Set和Map去重 ---...seen.has(a) && seen.set(a, 1)); } 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/107295.html原文链接:https

    2.6K20

    Map和Set的区别_list与set的区别

    目录 一、简述 二、Map 三、Set 四、Set和Map区别 ---- 一、简述 Set 和 Map 主要的应用场景在于 数据重组 和 数据储存。...Set 是一种叫做 集合 的数据结构,Map 是一种叫做 字典 的数据结构。 集合(Set): ES6 新增的一种新的数据结构,类似于数组,成员唯一(内部元素没有重复的值)。...Set 本身是一种构造函数,用来生成 Set 数据结构。 Set 对象允许你储存任何类型的唯一值,无论是原始值或者是对象引用。...('Bob',88); //对key放入新的value m.get('Bob'); //88 三、Set Set和Map类似,也是一组key的集合,但不存储value。...Set的值是唯一的可以做数组去重,Map由于没有格式限制,可以做数据存储 5. map和set都是stl中的关联容器,map以键值对的形式存储,key=value组成pair,是一组映射关 系。

    42920

    mysql前缀索引 默认长度_如何确定前缀索引的长度?

    utf8mb4编码,一个字符是占了4个字节,而我创建的索引50+50+100=200字符,总共就是800字节,所以超出了长度。...所以我们经常会见到把字段设置成varchar(255)长度的,在utf8字符集下这个是最大不超过767bytes的长度了,但是并不是一定要设置成varchar(255),还是要根据业务设置每个字段的长度...解决办法 可以直接去改字段的长度,或者说,把索引的字段取消掉一些,但是这样改对表本身是不友好的。 通过限定字段的前n个字符为索引,可以通过衡量实际的业务中数据中的长度来取具体的值。...,这个就是我们说的前缀索引 修改单个索引的最大长度 修改索引限制长度需要在my.ini配置文件中添加以下内容,并重启: #修改单列索引字节长度为767的限制,单列索引的长度变为3072 innodb_large_prefix...上面我们说到可以通过前缀索引来解决索引长度超出限制的问题,但是我们改如何确定索引字段取多长的前缀才合适呢?

    3.6K20
    领券