ES6 新增集合----- Set 和Map

  Sets 和数组一样,都是一些有序值的的集合,但是Sets 和数组又有所不同,首先Sets 集合中不能存有相同的值,如果你向Sets 添加重复的值,它会忽略掉, 其次Sets 集合的作用也有所不同,它的主要作用一是存储数据,二是在于看一个值是不是在集合中,而不是对单个值进行操作,Sets 的查找更快。那怎样才能创建一个Sets, 使用new  Set(); 怎样才能添加值呢? 调用add() 方法

let set = new Set();
set.add(1);
set.add(2);

set.add({
    name: 'sam'
})

  刚才我们说了,Sets 集合中不能添加重复的值,如果添加了,Sets 也会把它忽略掉,现在就可以试一试了,添加一个1,

let set = new Set();
set.add(1);
set.add(2);

set.add({
    name: 'sam'
})
set.add(1)

  那我们怎么才能知道有没有添加到set中呢? 它又一个size属性,可以返回集合中又多少个元素, 

console.log(set.size)  // 3

  set 中只要3个元素, 表明没有添加成功, 直接console.log(set), 也能看出它里面的包含的值。那这又引出了例外一个问题,Sets 集合是怎么判断两个值是重复或相等呢?内部调用的是Object.is() 方法判断相等性。

  除了调用add() 方法添加数据外,我们也可以创建Sets 的时候,直接进行初始化。new Set() 可接受数组作为参数,如果数组中有重复的值,初始化的时候直接过滤掉。

let set = new Set([1, 1, 2, 3, 3]);
console.log(set.size) // 3

 

上一篇:redis数据类型


下一篇:Python集合