一:set概述。
ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
语法:
set对象允许存储任何类型的唯一值,无论是原始值或者是对象引用;
new Set([iterable])
1,参数非必需, 如果传递一个可迭代对象,他的所有元素被添加到新的Set中,如果无此参数,则Set为空。
2,返回一个新的Set对象。
二:Set实例的方法和属性
属性:
Set.prototype.constructor: 构造函数,默认就是Set函数。 Set.prototype.size: 返回Set实例的成员总数。
方法:
操作方法
add(value): 添加某值,返回Set结构本身。
delete(value): 删除某值, 返回布尔值。
has(value): 检测Set的成员是否有这个值,返回布尔值。
clear(value): 清除所有成员,不返回值。
size(value):查看数据个数
例1:
const set = new Set();
//往set中添加数据
set.add(100);
set.add('string');
set.add({name:"kiki"});//对象
set.add(true);//布尔值
set.add(100);
console.log(set);
//添加重复的值,无作用。
结果:
例2:
//定义一个集合
const set1 = new Set([100,true,"string"]);
console.log(set1);//{1, true, "string"}
//计算set1中的数据个数
console.log(set1.size);//3
//检查是否存在对应值
console.log(set1.has(100));//true
console.log(set1.has({name:"kiki"}));//false
//匹配的不是值而是地址,地址是唯一的,所以为false
// 删除set内容
set.delete(100);
console.log(set1);
遍历方法
keys():返回键名的遍历器
values():返回键值的遍历器
entries():返回键值对的遍历器
forEach():使用回调函数遍历每个成员
例子:
//for....of遍历set
for(let item of set){
console.log(item);
}
//将set转化为数组Array
const setArray=Array.from(set);
console.log(setArray)
set对象与数组之间的转换
const set3 = new Set([100,true,"string"]);
//将set3转化为数组Array
const setArray=Array.from(set3);
console.log(setArray)//[100, true, "string"]
注意:set对象是值的集合,元素只会出现一次,即Set中的元素是唯一的,NaN被Set认为是相同的,则{}被认为是不同的。
var set4 = new Set([{},{}])
console.log(set4)//{{},{}}
console.log(set4.size)//2
var set5 = new Set([NaN,NaN])
console.log(set5)//NaN
console.log(set5.size)//1