ES5-ES6-ES7_集合Set和Map

集合的概念

集合是一组无序且唯一(元素不能重复)的项组成的。这个数据结构使用了与有限集合相同的数学概念,应用在计算机的数据结构中 特点:key和value相同,没有重复的value

Set集合

ES6提供了数据结构set,它类似于数组,但是成员的值都是唯一的,没有重复的值 。Set 本身是一个构造函数,用来生成 Set 数据结构

Set数据结构的创建——Set方法里可以指定参数,也可以不指定参数(参数是一个数组)

const s1 = new Set();
const s2 = new Set([1,2,3,4]);

console.log(s1) // Set {}
console.log(s2) // Set { 1, 2, 3, 4 }

Set类的属性——获取Set类中有几个数据

const s1 = new Set();
const s2 = new Set([1,2,3,4]);

console.log(s1.size) // 0
console.log(s2.size) // 4

Set类的方法—Set.add(value)——Set.add(value) 添加一个数据,返回Set结构本身

成员的值都是唯一的,没有重复的值,所以在后面添加相同的值到set结构中是无效的

s1.add('a').add('b');
console.log(s1)   //Set { 'a', 'b' }

s2.add('c')
console.log(s2);   //Set { 1, 2, 3, 4, 'c' }

s2.add(1);
console.log(s2);  //已经有相同的值了,所以添加无效还是原来的 Set { 1, 2, 3, 4, 'c' }

Set类的方法—Set.delete(value) set.delete(value) 删除指定数据,返回一个布尔值,表示删除是否成功

const s2 = new Set([1,2,3,4]);

var ba1 = s2.delete(1)
var ba2 = s2.delete('c')

console.log(ba1); //true
console.log(ba2); //false
console.log(s2); //Set { 2, 3, 4 }

Set类的方法—Set.has(value)——判断该值是否为set的成员,返回一个布尔值

const s = new Set([1,2,3,4]);

const bs1 = s.has(1);
const bs2 = s.has('a');
console.log(bs1,bs2);   //true false

Set类的方法—Set.clear()——清除所有的数据,没有返回值

const s = new Set([1,2,3,4]);

s.clear();
console.log(s);  // Set {}

Set的遍历器——keys() 返回键名的遍历器,values() 返回键值的遍历器,entries() 返回键值对的遍历器,forEach() 使用回调函数遍历每个成员

const s = new Set([1,2,3,4]);

console.log(s.keys());  // SetIterator { 1, 2, 3, 4 }
console.log(s.values());   //SetIterator { 1, 2, 3, 4 }
console.log(s.entries());   //SetIterator { [ 1, 1 ], [ 2, 2 ], [ 3, 3 ], [ 4, 4 ] }


//该方法可以接收三个参数,分别是:键值,健名,set本身
s.forEach(function(value,key,set){
    console.log(value+'lina');
    console.log(set)
})

利用Set为数组去重——直接将要给数组放入到,set的的构造方法中即可

const arr = [1,2,3,45,2,3,4,13,5,7,1,3,2]

const s = new Set(arr);

console.log(s);  // Set { 1, 2, 3, 45, 4, 13, 5, 7 }
console.log(arr);   //[ 1, 2, 3, 45, 2, 3, 4, 13, 5, 7, 1, 3, 2 ]

console.log([...s]);//将set转成数组,结果是[ 1, 2, 3, 45, 4, 13, 5, 7 ]

猜你喜欢

转载自www.cnblogs.com/LO-ME/p/10588633.html