ES6之 new Set()

ES6之 new Set()newSet()Set是es6新增的数据结构,似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。

大家好,欢迎来到IT知识分享网。

Set是es6新增的数据结构,似于数组,但它的一大特性就是所有元素都是唯一的,没有重复的值,我们一般称为集合。

一、方法

1、添加元素 add()

添加某个值,返回 Set 结构本身,当添加实例中已经存在的元素,set不会进行处理添加。也可以采用链式写法。

var list = new Set();
list.add("a");
list.add(1).add(2).add(3).add(3);
console.log(list);

ES6之 new Set()

 2、删除元素 delete()

删除某个值,返回一个布尔值。

var list = new Set(["a", 1, 2, 3]);
list.delete(2);
console.log(list);

 ES6之 new Set()

 3、has()

判断某元素是否存在,返回一个布尔值。

var list = new Set(["a", 1, 2, 3]);
list.has(2);    //true

4、clear()

清除所有元素,没有返回值。

var list = new Set(["a", 1, 2, 3]);
list.clear();
console.log(list);

ES6之 new Set()

5、 遍历方法:

Set结构的实例有四个遍历方法,可用于遍历成员。
keys(),values(),entries()返回的都是遍历器对象。Set结构没有键名,只有键值,所以keys()和values()方法的行为完全一致。

(1)keys():返回键名的遍历器

var list = new Set(["a", 1, 2, 3]);
for(let key of list.keys()) {
    console.log(key);    // a 1 2 3
}

(2)values():返回键值的遍历器

var list = new Set(["a", 1, 2, 3]);
for(let value of list.values()) {
    console.log(value);    // a 1 2 3
}

(3)entries():返回键值对的遍历器

var list = new Set(["a", 1, 2, 3]);
for(let row of list.entries()) {
    console.log(row);    // ["a", "a"] [1, 1] [2, 2] [3, 3]
}

(4)forEach():使用回调函数遍历每个成员

var list = new Set(["a", 1, 2, 3]);
list.forEach((value, key) => {
    console.log(key + ":" + value);    // a:a  1:1  2:2  3:3
});

二、使用场景

1、用于数组去重

var arr = [2, 3, 5, 3, 5, 2];
var arrSet = new Set(arr);
console.log(arrSet);    // Set(6) {2, 3, 5}

//方法一:用ES6的...结构
let newArr1 = [...arrSet];
console.log(newArr1 );    // [2, 3, 5]

//方法二:用Array.from()将类数组转化为数组
let newArr2 = Array.from(arrSet);
console.log(newArr2 );    // [2, 3, 5]

2、用于字符串去重

var str = "2234332244";
var newStr = [...new Set(str)].join("");
console.log(newStr);    //234

3、实现并集、交集、和差集

let a = new Set([1, 2, 3]),
b = new Set([2, 3, 4]);

//并集
var res1 = new Set([...a, ...b]);
console.log('并集:', res1);

//交集
var res2 = new Set([...a].filter(x => b.has(x)));
console.log('交集:', res2);

//差集(a 相对于 b)
var res3 = new Set([...a].filter(x => !b.has(x)));
console.log('差集:', res3);

ES6之 new Set()

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/11761.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信