版权声明:本文为博主原创文章,未经博主允许不得转载。
Set概述
Set是ES6新提出的一种数据结构,类似于数组,不过它里面的成员唯一,不会发生类型转换,因此数据类型不同的两个相同的值可以独立存在。
let a=12; //number类型
let b='12'; //string类型
这两个值是可以共同存在于Set数据结构内的
复制代码
Set创建
Set作为一个函数,可以接收参数,接收的参数内容可为数组或数组对象。
let x = new Set(); //方式一
let y = new Set([5,12,3,33,27,1]); //方式二
let obj = new Set([{name:'Liming',age:18},{name:'Zhangsan',age:23},{name:'Zhaosi',age:25}]); //方式三
复制代码
注意:newSet不同于数组类型,无法访问数组内的方法,想访问数组内方法,需要转化为数组。
Set与Array互转
- Set转为Array
var s = new Set([1,2,3,4]);
console.log(s);
var arr = [...s]; //使用展开符...将set展开,运用[ ]表示数组;
console.log(arr);
复制代码
- Array转为Set
var arr = [1,2,3,4,5,6,7,6,6,7];
console.log(arr);
var s = new Set(arr); //Set是函数,接收参数可以传入数组,新的数据类型即为Set类型;
console.log(s);
复制代码
Set方法
- add(n) 添加成员,重复值不添加
- delete(n) 删除某个值,返回boolean
- has(n) 判断n是否为Set成员,返回boolean
- clear() 清楚所有成员,没有返回值
let s = new Set([15,22,5,12,3,2,11]);
s.add(8);
console.log(s); //打印s:[15,22,5,12,3,2,11,8]
s.add(22);
console.log(s); // 添加相同数据时,无法添加,仍打印[15,22,5,12,3,2,11,8]
let x = s.has(5)
console.log(x); //返回true
s.delete(2);
console.log(s); //返回[15,22,5,12,3,11,8]
s.clear();
console.log(s); //返回Set(0){}
复制代码
遍历Set数据操作
- keys():返回键名的遍历器
- values():返回键值的遍历器
- entries():返回键值对的遍历器
- forEach():使用回调函数遍历每个成员
遍历输出
let s = new Set([15,22,5,12,3,2,11]);
for(let item of s.keys()){
console.log(item);
}
复制代码
转载于:https://juejin.im/post/5cf71648f265da1b6028f0dc