es6知识点1-数据结构Set
一、定义
Set是一种新的数据结构(数据结构就是数据元素以某种特性关系组成的集合方式)
和数组很类似,但是是一种新的数据组合方式。有自己的构造函数。可以自己去new新建数据。
特点
- Set里面的元素是惟一的,不会重复;
- Set本身是一个构造函数,可以自己生成数据结构;
二、Set数据结构的方法
1.** add(val)** 增加一个值,可以重复增加,但是不会有效果;增加的时候不会有数据类型的转换,数字5和字符串“5”是不一样的;两个NaN是相等的;会改变结构本身
var setArr = new Set([1,2,3]);
console.log(setArr) // {1,2,3}
var setArr = new Set([1,2,3]);
console.log(setArr.add(4)); // {1,2,3,4}
console.log(setArr.add(4)); // {1,2,3,4} //再次添加 但是不会有效果
var setArr = new Set([1,2,3]);
console.log(setArr.add(4)); // {1,2,3,4}
console.log(setArr.add('4')); // {1,2,3,4,'4'} //增加的时候不会有数据类型的转换
var setArr = new Set([1,2,3]);
console.log(setArr.add(NaN)); // {1,2,3,4,NaN}
console.log(setArr.add(NaN)); // {1,2,3,4,NaN} //NaN相等 再次添加 不会有效果
//但是两个对象总是不相等的,即使是空对象
- delete(val) 删除元素,返回布尔值,是否删除成功
var setArr = new Set([1,2,3]);
console.log(setArr) // {1,2,3}
setArr.delete(1); //true
console.log(setArr) // {2,3}
- has(val) 是否包含该元素,返回布尔值
var setArr = new Set([1,2,3]);
console.log(setArr) // {1,2,3}
setArr.has(1); //true
- clear(val) 清除所有元素,无返回值
var setArr = new Set([1,2,3]);
console.log(setArr) // {1,2,3}
setArr.clear(); // 无返回值
console.log(setArr); // {}
三、Set数据结构的遍历方法(遍历器)
**
Set通过for…of…,而Array通过for…in…
Set是集合,不能像数组用下标取值 set的键名值和键值相同的
**
- keys() 返回都是遍历器对象
var setArr = new Set([1,2,3]);
for(let i of setArr.keys()) {
console.log(i)
}
// 1
// 2
// 3
- values() 返回都是遍历器对象
var setArr = new Set([1,2,3]);
for(let i of setArr.values()) {
console.log(i)
}
// 1
// 2
// 3
- entries() 返回都是遍历器对象
var setArr = new Set([1,2,3]);
for(let i of setArr.entries()) {
console.log(i)
}
// [1,1]
// [2,2]
// [3,3]
- forEach(function(value,key){}) 用回调返回键值对,可以返回被渲染后的键值对
var setArr = new Set([1,2,3]);
setArr.forEach(function (value, key) {
console.log(value+'-'+key);
})
//1-1
//2-2
//3-3
四、数组去重
var array = [1,1,2,3,4,5,6,6,6];
function qc(arr){ //去重
return [...new Set(arr)] //扩展运算符 复制成数组
}
qc(array) //[1, 2, 3, 4, 5, 6]