JS数据结构 您所在的位置:网站首页 js怎么创建类数组 JS数据结构

JS数据结构

2023-09-24 22:23| 来源: 网络整理| 查看: 265

Set   ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。   很多时候我们把Set叫做 集合,但是,Set可以是集合,集合不一定是Set。   特性:唯一性=>不重复=>能够对数据进行去重操作。    注:集合去重,是全等匹配,===。

创建Set   Set 本身是一个构造函数,调用构造函数用来生成 Set 数据结构。   关键词 标识符 = new Set();   例 let i = new Set();      Set 函数可以接受一个数组(或类似数组的对象)作为参数,用来进行数据初始化。   let i = new Set([1, 2, 3, 4, 4]);  会得到  set{1, 2, 3, 4,}

注:如果初始化时给的值有重复的,会自动去除。集合并没有字面量声明方式。

Set的属性

常用的属性就一个:size   返回 Set 实例的成员总数。   let s = new Set([1, 2, 3]);   console.log( s.size ); // 3    Set的方法

Set 实例的方法分为两大类:操作方法(用于数据操作)和遍历方法(用于遍历数据)。

操作方法: add(value)    添加数据,并返回新的 Set 结构 delete(value)   删除数据,返回一个布尔值,表示是否删除成功 has(value)    查看是否存在某个数据,返回一个布尔值 clear()      清除所有数据,没有返回值

let set = new Set([1, 2, 3, 4, 4]); // 添加数据 5 let addSet = set.add(5); console.log(addSet); // Set(5) {1, 2, 3, 4, 5} // 删除数据 4s let delSet = set.delete(4); console.log(delSet); // true // 查看是否存在数据 4 let hasSet = set.has(4); console.log(hasSet); // false // 清除所有数据 set.clear(); console.log(set); // Set(0) {}

遍历方法:

Set 提供了三个遍历器生成函数和一个遍历方法。 keys()     返回一个键名的遍历器 values()    返回一个键值的遍历器 entries()    返回一个键值对的遍历器 forEach()   使用回调函数遍历每个成员

let color = new Set(["red", "green", "blue"]); for(let item of color.keys()){ console.log(item); } // red // green // blue for(let item of color.values()){ console.log(item); } // red // green // blue for(let item of color.entries()){ console.log(item); } // ["red", "red"] // ["green", "green"] // ["blue", "blue"] color.forEach((item) => { console.log(item) }) // red // green // blue

与数组相关操作

Set 转数组: 由于扩展运算符…,内部的原理也是使用的 for-of 循环,所以也可以用于操作 Set 结构。 例如将 Set 结构转换为数组结构:

let color = new Set(["red", "green", "blue"]); let colorArr = [...color];

数组去重: 扩展运算符和 Set 结构相结合,就可以去除数组的重复成员。

let arr = [1,2,2,2,2,"2",24,5,6]; //step1:数组转集合 let set = new Set(arr);//已经去掉重复值,当前不是数组,而集合  Set { 1, 2, '2', 24, 5, 6 } //step2:集合转数组 arr = [...set];//[ 1, 2, '2', 24, 5, 6 ]

扩展

let num1 = new Set([1, 2, 3, 4]); let num2 = new Set([3, 4, 5, 6]); //并集 let union = new Set([...num1,...num2]); console.log(union);//Set { 1, 2, 3, 4, 5, 6 } //交集 let intersect = new Set( [...num1].filter(x=> num2.has(x)) ) console.log(intersect); //Set { 3, 4 } //差集 let difference = new Set( [...num1].filter(x => !num2.has(x)) ) console.log(difference); //Set { 1, 2 }

原文链接:https://www.cnblogs.com/jiayouba/p/11946517.html



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有