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