ES6 Set
<html>
<head>
<title>ES6 Set</title>
</head>
<body>
<script>
/*
*Set 对象 :Set 对象允许你存储任何类型的唯一值,无论是原始值或者是对象引用。
*/
/*Set 中的特殊值
*Set 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
*+0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
*undefined 与 undefined 是恒等的,所以不重复;
*NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
*/
{
let mySet = new Set();
mySet.add(1);
mySet.add(5);
mySet.add(5);
for (var value of mySet) {
console.log(value);//这里输出 1 , 5 set 不可重复 体现set唯一性
}
mySet.add("someText");
for (var value of mySet) {
console.log(value);//这里输出 1 , 5 ,someText set 体现set多样性
}
var o = { name: "小明", age: "19" };
let mySets = new Set();
mySets.add(o);
mySets.add({ name: "小明", age: "19" });
for (var value of mySets) {
console.log(value);//这里输出{name:"小明",age:"19"}, {name:"小明",age:"19"} ,虽然值相等,但是不是同一个对象,所有能存
}
}
/*
*类型转换
*/
console.log("----------------------类型转换:分割线-------------------------------");
{
//Array转set
var mySet = new Set(["java"], ["javascript"], ["jQuery"]);
//set转Array
var myArray = [...mySet];
//String转Set
var myStringSet = new Set('HELLOWORLD');
for (var value of myStringSet) {
console.log(value);//这里按字符输出 'H' 'E'......
}
}
/*
*Set 对象作用
*/
//数组去重
console.log("----------------------Set 对象作用:数组去重-------------------------------");
{
var mySet = new Set([1, 2, 3, 4, 4, 4, 5]);
console.log([...mySet]);//真的去掉了,太香了吧,ES6
}
//并集
console.log("----------------------Set 对象作用:并集-------------------------------");
{
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a, ...b]);//并集,相同的应该是直接覆盖,我不太确定
console.log(union);
}
//交集
console.log("----------------------Set 对象作用:交集-------------------------------");
{
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a].filter(x => b.has(x)));
//上面箭头函数,下面是正常的函数,作用一样 [...a]将Set转换成 数组
var unions = new Set([...a].filter(function (x) {
return b.has(x);
}));
console.log(union);
console.log("----------------------unions-------------------------------");
console.log(unions);
}
//差集
console.log("----------------------Set 对象作用:差集-------------------------------");
{
var a = new Set([1, 2, 3]);
var b = new Set([4, 3, 2]);
var union = new Set([...a].filter(x => !b.has(x)));//和交集相反
console.log(union);
}
</script>
</body>
</html>
教程来源于:https://www.runoob.com/w3cnote/es6-tutorial.html

浙公网安备 33010602011771号