js Set

1.功能介绍

  Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。另外,NaNundefined都可以被存储在Set 中, NaN之间被视为相同的值(NaN被认为是相同的,尽管 NaN !== NaN)

2.基本使用

const set = new Set()
// 添加元素
set.add(1)
set.add('2')
set.add('2')
set.add(true)
console.log(...set) // 1 "2" true,注意...set ==> 1,"2",true

// 删除元素
set.delete('2')
console.log(...set) // 1 true
console.log(set.delete(3)) // false 删除失败,set中不存在元素3

// 判断元素是否存在
console.log(set.has(1)) // true
console.log(set.has(NaN))    // false,set中不存在元素NaN

// 遍历set
for (let [key, value] of set.entries()) {
    console.log(key, value) // 1 1\ntrue true,set的entries()中key, value相等
}                
set.forEach((value, key) => {
    console.log(value, key)    // 1 1\ntrue true
})

// 获取set中元素的数目
console.log(set.size)    // 2
set.clear() 
console.log(set.size)    // 0

// 转换成数组(下面案例已屏蔽上方的clear方法)
console.log([...set])    // (2) [1, true]
console.log(Array.from(set)) // (2) [1, true]
console.log(Array.from(set.values()))    // (2) [1, true]
console.log(Array.from(set.keys()))    // (2) [1, true]

3.应用举例

// 数组去重
const repeatArr = [1, 2, 2, 3, 3, 4, 5]
console.log(Array.from(new Set(repeatArr))) // (5) [1, 2, 3, 4, 5]

// 字符串去重(大小写敏感)
const set = new Set('woork')    
console.log(set)    // Set(4) {"w", "o", "r", "k"}
console.log([...set].join('')) // work
console.log(new Set('wOork'))    // Set(5) {"w", "O", "o", "r", "k"}            

4.参考文档

  https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set

原文地址:https://www.cnblogs.com/haveadate/p/es6_set.html