Set和Map数据结构。

栏目: 数据库 · 发布时间: 5年前

内容简介: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():使用回调函数遍历每个成员。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Redis设计与实现

Redis设计与实现

黄健宏 / 机械工业出版社 / 2014-6 / 79.00

【官方网站】 本书的官方网站 www.RedisBook.com 提供了书本试读、相关源码下载和勘误回报等服务,欢迎读者浏览和使用。 【编辑推荐】 系统而全面地描述了 Redis 内部运行机制 图示丰富,描述清晰,并给出大量参考信息,是NoSQL数据库开发人员案头必备 包括大部分Redis单机特征,以及所有多机特性 【读者评价】 这本书描述的知识点很丰富,......一起来看看 《Redis设计与实现》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具