Set数据结构【ES6】

读万卷书,行万里路!

目录

Set结构

它类似于数组,但是成员的值都是唯一的,没有重复的值。【数组去重】

javascript 复制代码
let s1 = new Set([1,2,2,3,4,3])

console.log(s1)              // Set(4) {1, 2, 3, 4}
console.log([...s1]);        // (4) [1, 2, 3, 4]
console.log(Array.from(s1)); // (4) [1, 2, 3, 4]

Set实例属性

size属性

javascript 复制代码
let s1 = new Set([1,2,2,3,4,3])
console.log(s1.size)         // 4

Set方法

add方法

往set里面添加数据 add(value)

javascript 复制代码
let s2 = new Set();
s2.add(1).add(2).add(3).add(2);  
console.log(s2)          // Set(3) {1, 2, 3}

has方法

检查Set中是否包含某个值. has(value)

javascript 复制代码
let s2 = new Set([1,2,3,4,5])
console.log(s2.has(3))       // true
console.log(s2.has(8))       // false

delete方法

从set中删除一个值 delete(value)

javascript 复制代码
let s2 = new Set([1,2,3,4,5])
s2.delete(3)
console.log(s2.has(3))    // false
console.log(s2)    // Set(4) {1, 2, 4, 5}

clear方法

清除Set中的所有值 clear()

javascript 复制代码
let s2 = new Set([1,2,3,4,5])
s2.clear();
console.log(s2)              // Set(0) {}

遍历

keys()

返回键名的遍历器

javascript 复制代码
let s2 = new Set([1,2,3,4,5])

for (let i of s2) {
    console.log(i) // 1 <br/> 2 <br/>  3 <br/>  4  <br/> 5
}

for(let i of s2.keys()){
    console.log(i) // 1 <br/> 2 <br/>  3 <br/>  4  <br/> 5
}

values()

返回键值的遍历器

javascript 复制代码
for(let i of s2.values()){
    console.log(i) // 1 <br/> 2 <br/>  3 <br/>  4  <br/> 5
}

entries()

返回键值对的遍历器

javascript 复制代码
for(let i of s2.entries()){
    console.log(i) // (2) [1, 1] <br/> (2) [2, 2] <br/>  (2) [3, 3] <br/>  (2) [4, 4] <br/> (2) [5, 5]
}

与数组对比

javascript 复制代码
let arr = ['aa','bb','cc']
for(let i of arr){
    console.log(i) // aa <br/> bb <br/> cc
}

for(let i of arr.keys()){
    console.log(i) // 0 <br/> 1 <br/> 2
}

for(let i of arr.values()){
    console.log(i) // aa <br/> bb <br/> cc
}

for(let i of arr.entries()){
    console.log(i) // (2) [0, 'aa'] <br/> (2) [1, 'bb'] <br/> (2) [2, 'cc']
}

forEach()

javascript 复制代码
s2.forEach((item,index)=>{
    console.log(item,index) // 1 1 <br/> 2 2<br/> 3 3<br/> 4 4<br/> 5 5
})

对于复杂数据进行去重

自己写的方法

javascript 复制代码
function removeRepeat(arr){
    let res = new Set();
    return arr.filter((item)=>{
        let id = JSON.stringify(item);
        if(res.has(id)){
            return false;
        }else{
            res.add(id);
            return true;
        }
    })
}

let a1 = [1,1,2,3,4,3,'a','b','c','a',{name:'ssy'},{age:18},{name:'ssy'}]

console.log(removeRepeat(a1))

结果:

new Set方法

javascript 复制代码
let a1 = [1,1,2,3,4,3,'a','b','c','a',{name:'ssy'},{age:18},{name:'ssy'}]

console.log(new Set(a1))

结果:

相关推荐
勇往直前plus35 分钟前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
用户938515635072 小时前
从零搭建 AI 日记助手:用 Milvus 向量数据库 + RAG 让机器读懂你的每一天
javascript·人工智能·全栈
a1117763 小时前
坦克大战3D Three.js 3D (开源项目)
开发语言·javascript·3d
kyriewen4 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz4 小时前
Rust &‘static str浅析
java·前端·javascript·rust
zandy10115 小时前
衡石 Agentic BI的ReAct 推理框架在 Agentic BI 中的工程化实践
前端·javascript·react.js
code bean6 小时前
【C#】 `Channel<T>` 深度解析:生产者-消费者模式的现代解法
数据结构·c#
郝亚军6 小时前
webstorm如何创建vue 3.js
javascript·vue.js·webstorm
এ慕ོ冬℘゜6 小时前
jQuery attr() 方法超详细讲解:属性获取、赋值、实战踩坑全解
前端·javascript·jquery
storyseek6 小时前
前缀和实现Kogge-Stone算法
数据结构·算法