原文链接: js Set 的使用
上一篇: vue 路由懒加载
下一篇: 使用dfs求解修道士和野人问题
1.用new创建Set
let s = new Set();
或let s = newSet([1,2,3]);
2.用add命令增加元素
s.add(5);
也可以用.add连续加多个
s.add(100).add(200);
3.用size属性获取元素个数
console.log(s.size);
注意,不能用s.length,它没有定义这个属性
4.用has判断元素是否存在
console.log(s.has(100));//返回bool结果,true表示有,false表示无
5.用for of遍历
for(let e of s) {
console.log(e);
}
也可用forEach
s.forEach(e=>console.log(e));
6.用delete删除元素
s.delete(100); //返回bool结果,true表示删除成功,false表示删除失败
s.clear();//则是清除所有的元素
7.关于keys,values和entries
实际上Set和Map一样,都是以KeyValue的方式存放的,只是Set的Key和Value是一样的。
所以keys和values返回的都是Key集合。如
let s = new Set([100,200,300]);
用s.keys()和s.values()返回的都是{ 100, 200, 300 }
而用s.entries()返回的则是{ [ 100,100 ], [ 200, 200 ], [ 300, 300 ] }
我想这几个函数是为了和Map定义为相同的行为吧。
注意:不能用add增加多个元素
如:s.add(100,200,300);实际上,只增加了一个100
用s.add([100,200,300]);则是把[100,200,300]做为一个元素加到数组了
lets = new Set();
s.add([100,200,300]);
则得到的s为{ [ 100, 200, 300 ] }
如果用add加两个{},则集合中,会有两个{}
Let s=new Set();
s.add({}).add({});
则会得到{{},{}};
经过了解,原来集合中,是用===判断两个元素是相等
{}是不同的对象,所以就会出现上面的情况