ES6以前,数组是javaScript里面的惟一一个集合对象。若是你接触过其余编程语言,可能会知道用来表示集合的数据结构每每还有两种:Set和Map。
Set没有重复的元素的列表。而Map的元素是一个个的键值对。这一篇咱们只说Set,Map会另起一篇文章。接下来咱们就来看看Set的相关知识:
一:建立Set
1: 经过new Set()建立一个空列表java
let set = new Set();
以上咱们就成功地建立好了一个Set列表,只是它暂时没有任何元素。在后面的内容,咱们能够看到怎样为它添加元素。编程
2: 以一个可迭代对象初始化列表数组
let array = [1, 2]; let map = new Map([['name', 'mike'],['age', 25]]); let setOfArray = new Set(array); let setOfMap = new Set(map); setOfArray.forEach(function (value, key, set) { console.log(`${key}: ${value}`); }); setOfMap.forEach(function (value, key, set) { console.log(`${key}: ${value}`); });
以上例子里面的setOfArray.forEach()咱们获得的打印结果是:数据结构
1: 1 2: 2
从这个打印结果,咱们也能够看得出来,Set元素的key和value是同一个值。编程语言
以上例子里面的setOfMap.forEach()咱们获得的打印结果是:code
name,mike: name,mike age,25: age,25
虽然咱们能够用Map初始化一个Set,可是显然这么作没什么意义。一般咱们仍是更多会使用Array。
二:Set的增
当咱们经过给new Set()不传递任何参数而建立一个空Set以后,通常还须要经过add()
方法来添加元素:对象
let set = new Set(); set.add(1); set.add('1'); console.log(set.size); // 2
在上面的例子里,咱们分别添加了数字型的和字符串形的1,最终咱们获得两个元素。这是Set区别于普通对象的地方:通常的对象,数值型的属性名会被强制转换为字符串型;可是Set不会。ip
三:Set的删
想要删除Set里面的全部元素,只须要调用clear()
方法:字符串
let set = new Set([1, 2, 3]); set.clear(); console.log(set.size); // 0
四:Set的查
咱们能够经过has()
方法来查询某个元素是否在Set集合里面:io
let set = new Set([1, 2, 3]); console.log(set.has(1)); //true console.log(set.has('1'));//false
五:Set的减delete()
方法可用于从Set集合里面除去某个元素:
let set = new Set([1, 2, 3]); set.delete(1); console.log(set.has(1)); //fasle console.log(set.size); // 2
七:Set的使用场景
从前面的文章中咱们陆陆续续了解到了Set集合的一些重要特性,好比:
1: Set没有重复元素 2: Set元素的key和value为同一值 3: 咱们可使用可迭代对象初始化Set
根据这些特性,咱们能够实现Array的去重。基本的思路就是:
1: 要处理的Array集合做为参数来初始化Set集合,这时咱们获得一个没有重复元素的Set 2: 经过展开运算符(...), 把第一步获得的Set集合转换为一个数组
代码示例:
let originalArray = [1, 1, 2, 2, 3, 4]; let set = new Set(originalArray); let newArray = [...set]; console.log(newArray); // [1, 2, 3, 4]
以上,就是Set的一些基本特性,语法和使用场景。