内容简介:ES6提供了新的数据结构Set,它类似与数组,但是成员值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成Set数据结构。上面代码通过add()方法向Set结构加入成员,结果表明Set结构不会添加重复的值。Set函数可以接受一个数组作为参数,用来初始化。
ES6提供了新的数据结构Set,它类似与数组,但是成员值都是唯一的,没有重复的值。 Set本身是一个构造函数,用来生成Set数据结构。
const s = new Set();
[2,3,5,4,5,2,2].forEach(x=>s.add(x));
for(let i of s){
console.log(i);//2 3 5 4
}
上面代码通过add()方法向Set结构加入成员,结果表明Set结构不会添加重复的值。
Set函数可以接受一个数组作为参数,用来初始化。
//例子1
const set = new Set([1,2,3,4,4]);
[...set];//[1,2,3,4]
//例子2
const items = new Set([1,2,3,4,5,5,5,5]);
items.size//5
//例子3
const set = new Set(document.querySelectorAll('div'));
上面代码中,例一和例二都是Set函数接受数组作为参数,例三是接受类似数组的对象作为参数。
上面代码也展示了一种去除数组重复成员的方法。
//去除数组的重复成员
[...new Set(array)]
//去除字符串里面的重复字符
[...new Set('ababbc')].join('');//'abc'
//下面代码向Set实例添加了两个NaN,但是只能加入一个。这表明在Set内部两个NaN是相等。
let set = new Set();
let a = NaN;
let b = NaN;
set.add(a);
set.add(b);
set // Set {NaN}
//另外,两个对象总是不相等的。
let set = new Set();
set.add({});
set.size // 1
set.add({});
set.size // 2
Set实例的属性和方法
Set结构的实例有以下属性。
-Set.prototype.constructor:构造函数,默认就是set函数。 -Set.prototype.size:返回Set实例的成员总数。
Set实例的方法分为两大类:操作方法和遍历方法。下面先介绍四个操作方法。
-add(value):添加某个值,返回Set结构本身。 -delete(value):删除某个值,返回一个布尔值,表示删除是否成功。 -has(value):返回一个布尔值,表示该值是否为Set的成员。 -clear();清除所有成员,没有返回值。
下面这些属性和方法的示例如下:
s.add(1).add(2).add(2); //注意2被加入了两次 s.size//2 s.has(1)//true s.has(2)//true s.has(3)//false s.delete(2); s.has(2)//false
下面是一个对比,看看在判断是否包括一个键上面,Object结构和Set结构的写法不同。
//对象的写法
const properties ={
'width':1,
'height':1
};
if(properties[someName]){
//do something
}
//Set的写法
const properties = new Set();
properties.add('width');
properties.add('height');
if(properties.has(someName)){
//do something
}
Array.from方法可以将Set结构转为数组。
const items = new Set([1,2,3,4,5]); const array = Array.from(items);
这就提供了去除数组重复成员的另一种方法。
function dedupe(array){
return Array.from(new Set(array));
};
dedupe([1,1,2,3])//[1,2,3]
遍历操作
Set 结构的实例有四个遍历方法,可以用于遍历成员。
-keys():返回键名的遍历器。 -values():返回键值的遍历器。 -entries():返回键值对的遍历器。 -forEach():使用回调函数遍历每个成员。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 数据结构 – 用于构建文件系统的数据结构?
- 荐 用Python解决数据结构与算法问题(三):线性数据结构之栈
- 数据结构和算法面试题系列-C指针、数组和结构体
- 请问二叉树等数据结构的物理存储结构是怎样的?
- 数据结构——单链表
- 常用数据结构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
数据结构与算法分析(C++版)(第3版)
Clifford A. Shaffer / 张铭、刘晓丹、等译 / 电子工业出版社 / 2013 / 59.00元
本书采用当前流行的面向对象的C++程序设计语言来描述数据结构和算法, 因为C++语言是程序员最广泛使用的语言。因此, 程序员可以把本书中的许多算法直接应用于将来的实际项目中。尽管数据结构和算法在设计本质上还是很底层的东西, 并不像大型软件工程项目开发那样, 对面向对象方法具有直接的依赖性, 因此有人会认为并不需要采用高层次的面向对象技术来描述底层算法。 但是采用C++语言能更好地体现抽象数据类型的......一起来看看 《数据结构与算法分析(C++版)(第3版)》 这本书的介绍吧!