资讯专栏INFORMATION COLUMN

ES6数据结构:set和map

VPointer / 1817人阅读

摘要:提供了新的数据结构。用法结构有以下属性构造函数,默认就是函数。结构有以下方法添加某个值,返回结构本身。返回一个布尔值,表示该值是否为的成员。清除所有成员,没有返回值。

Set

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

用法:new Set([iterable])

const set = new Set([1, 2, 3, 4, 4, 4]);
//[1, 2, 3, 4]

Set结构有以下属性:

Set.prototype.constructor: 构造函数,默认就是Set函数。

set.prototype.size : 返回Set的成员总数。

Set结构有以下方法:

add(value):添加某个值,返回 Set 结构本身。

delete(value):删除某个值,返回一个布尔值,表示删除是否成功。

has(value):返回一个布尔值,表示该值是否为Set的成员。

clear():清除所有成员,没有返回值。

const set = new Set();
//添加元素
set.add(1).add(2).add(2);
set.size;   //2

//检查元素
set.has(2);   //true
set.has(3);   //false

//删除元素
set.delete(2);
set.has(2);    //false

//清空集合
set.clear();
set.size;     //0
  

一些常见应用

//数组去重
let arr = [1, 2, 3, 2, 5, 5];
let unique = [...new Set(arr)];
// [1, 2, 3, 5]

//交,并,差集
let a = new Set([1, 2, 3]);
let b = new Set([4, 3, 2]);

// 并集
let union = new Set([...a, ...b]);
// Set {1, 2, 3, 4}

// 交集
let intersect = new Set([...a].filter(x => b.has(x)));
// set {2, 3}

// 差集
let difference = new Set([...a].filter(x => !b.has(x)));
// Set {1}
Map

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。ES6中的Map结构也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

用法:new Map([iterable])

const map  = new Map();

属性和方法

size:返回成员总数。

set(key, value):添加键值对到映射中

get(key):获取映射中某一个键的对应值

delete(key):将某一键值对移除出映射中

clear():清空映射中所有的键值对

entries():返回一个以二元数组(键值对)作为元素的数组

has(key):检查映射中是否包含某一键值对

keys():返回一个一当前映射中所有键作为元素的可迭代对象

values():返回一个一当前映射中所有值作为元素的可迭代对象

const map = new Map();

//添加键值对
map.set(1, "aaa");
map.set(2, "bbb").set("string", "sssss");

map.get(1);    // "aaa"
map.size;      // 3


//删除键值
map.delete(2);
map.has(2);    //false

//遍历方法
for(let key of map.keys()){
    console.log(key);
}
// 1
// "string"

for(let key of map.values()){
    console.log(key);
}
// "aaa"
// "sssss"

map.forEach(function(value, key, map){
    console.log("key:"+key+", value:"+value)
})
// "key:1, value:aaa"
// "key:string, value:sssss"

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/95494.html

相关文章

  • 深入理解:ES6中的SetMap数据结构Map与其它数据结构的互相转换

    摘要:学习笔记工作中常用到的语法只是简单提及和,今天有空于是写了这篇文章深入理解中的和数据结构,与其它数据结构的互相转换。的提供了新的数据结构。本身是一个构造函数,用来生成数据结构。 文中的内容主要是来自于阮一峰的《ES6标准入门》(第三版)。《学习ES6笔记──工作中常用到的ES6语法》只是简单提及Set和Map,今天有空于是写了这篇文章──《深入理解:ES6中的Set和Map数据结构,M...

    Cristalven 评论0 收藏0
  • 深入理解ES6笔记(七)Set集合Map集合

    摘要:创建并添加项目可以使用数组来初始化一个,并且构造器会确保不重复地使用这些值使用方法来测试某个值是否存在于中移除值使用方法来移除单个值,或调用方法来将所有值从中移除。属性的初始化将数组传递给构造器,以便使用数据来初始化一个。 主要知识点:Set的基本操作,Weak Set,Map的基本操作,Weak MapshowImg(https://segmentfault.com/img/bVbf...

    loostudy 评论0 收藏0
  • ES6引入的数据结构 - ES6 - ECMAScript特性 - Javascript核心

    摘要:引入的数据结构新加入的数据类型有这些数据结构的支持并不广泛,在写这篇文章的时候。是或其他可枚举的对象,其每个元素是的元数组。开头的和不对持有引用,不影响。因此,他们没有办法对自身的进行直接的枚举。目前新版的和支持。 原文:http://pij.robinqu.me/JavaScript_Core/ECMAScript/es6/es6_data_types.html 源代...

    fobnn 评论0 收藏0
  • 细说es6中的SetMap

    摘要:返回一个布尔值,表示该值是否为的成员。返回键名的遍历器返回键值的遍历器返回键值对的遍历器使用回调函数遍历每个成员需要特别指出的是,的遍历顺序就是插入顺序。该数组的所有成员,都会自动成为实例对象的成员。这意味着,数组的成员只能是对象。 1.Set ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构...

    Ryan_Li 评论0 收藏0
  • 由codewars上的一道题目学习ES6Map

    摘要:我对数据结构的学习最近在上做了一道题目,嗯,我这个渣渣没有做出来,然后看了别人的解决方案,是时候学习一下的了。。。。。读取对应的键值,如果找不到返回键是函数返回一个布尔值,表示某个键是否在数据结构中。 我对ES6数据结构Map的学习 最近在CodeWars上做了一道题目,嗯,我这个渣渣没有做出来,然后看了别人的解决方案,Map??? 是时候学习一下ES6的Map了。。。。。 以下是原题...

    IamDLY 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<