<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>创建Set</title>
<script src="../unitl/test.js"></script>
<style>
#results li.pass {color:green;}
#results li.fail {color:red;}
</style>
</head>
<body>
<div id="firstElement"></div>
<div id="secondElement"></div>
<ul id="results"></ul>
</body>
<script>
//Set 不能存在相同的元素,Set成员的值都是唯一的。
const ninjas = new Set(["Kuma","Hattori","Yagyu","Hattori"]);
//丢弃重复项
assert(ninjas.has("Hattori"),"Hattori is our set");
assert(ninjas.size ===3,"There are only three ninjas in our set !");
//可以向集合中添加不存在的元素
assert(!ninjas.has("Yoshi"),"Yoshi is not in yet..");
ninjas.add("Yoshi");
assert(ninjas.has("Yoshi","Yoshi is added"));
assert(ninjas.size ===4, "There are four ninjas in our set");
//向集合中添加存在的元素将补齐任何作用。
assert(ninjas.has("Kuma"),"Kuma is already added");
ninjas.add("Kuma");
assert(ninjas.size === 4,"Adding Kuma again has no effect");
//通过for...of 循环对集合进行遍历。
for(let ninja of ninjas) {
assert(ninja !== null,ninja);
}
</script>
</html>
//使用内置构造函数创建Set,如果不传入任何参数,将创建一个空Set。可以传入字符串:
new Set(["Kuma","Hattori","Yagyu","Hattori"]);
Set成员的值都是唯一的,最重要的作用是避免存储多个相同的对象。在本例子中,视图添加两次"Hattori",但是只成功添加一次。
Set具有多个可访问的方法。例如:has方法验证Set中是否存在元素:
ninjas.has("Hattori")
add 方法用于添加唯一成员:
ninjas.add("Yoshi")
如果你想知道Set中具有几个元素,可以使用size属性。与Map和数组类似,Set也是集合,因此可以使用for-of循环进行遍历。