Set

84 阅读1分钟

Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等,如果值一样的就只取一个。
有几个特殊值需要特殊对待:
(1)+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复
(2)undefined 与 undefined 是恒等的,所以不重复;
(3)NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复

Set用add添加成员

 var s1=new Set([12,44,[23,45]])
 s1.add(1);
 s1.add({"age":20})
 console.log(s1)

image.png

获取Set中的成员用遍历的方法

	var s1 =new Set( [120, 30, 30, 10,{}])
		s1.forEach(function(el){
        console.log(el)
      })

image.png 合并两个集合用...

 var s1=new Set([12,44,[23,45]])
 var s2=new Set([12,'dicw','dc',12])
 var s3=new Set([...s1,...s2])
 console.log(s3)

image.png

求两个集合的交集

var arr = [120, 30, 30, 10,{}]
var arr1 = [10, 200,30,10,{}]//两个集合的引用数据不同
var s2 = new Set(arr.filter(function(el) {
if (arr1.includes(el)) {
	return el
	}
	}))
console.log(s2)

image.png

Set转换数组

	var s1 =new Set( [120, 30, 30, 10,{}])
	s2=Array.from(s1)
	console.log(s2)

image.png