ES6之Set集合(通俗易懂,含实践)

Set是什么?它的方法有哪些?它在实例开发中有什么作用?

让我为大家介绍一下吧!

ES6提供了新的数据结构 Set(集合) 。它类似于数组,但成员的值是唯一的,常用于数组去重。

创建方法:

javascript 复制代码
    let s = new Set()
    console.log(s)

它属于什么类型?

javascript 复制代码
    console.log(typeof s) //object

我们通常在set中写入数组

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    console.log(s)

由此可见,set 可以自动帮我们去重

Set 对象的几个常用方法和属性

1.size

可以获取元素的个数

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    console.log(s.size) //4 

2.add( )

向 Set 添加新元素

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    s.add("四大名著")
    console.log(s) 


3.delete( )

删除由其值指定的元素

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    s.add("四大名著")
    s.delete("四大名著")
    console.log(s) 


4.has( )

如果值存在则返回 true,否则false

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    console.log(s.has("西游记")) //true
    console.log(s.has("四大名著")) //false

5.clear( )

清空

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    s.clear()
    console.log(s)

6.我们可以使用for...of遍历

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    for(let v of s) {
        console.log(v)
    }


7.keys( )

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    console.log(s.keys())


8.forEach( )

为每个元素调用回调

javascript 复制代码
    let s = new Set(["西游记","三国演义","水浒传","红楼梦","西游记"])
    s.forEach(item=>{
        console.log(item)
    })

实践

1.数组去重

javascript 复制代码
    let arr = [1, 2, 3, 3, 2, 1, 4, 5, 1]
    let result = [...new Set(arr)]
    console.log(result)

2.交集

javascript 复制代码
    let result = [...new Set(arr1)].filter(item=>new Set(arr2).has(item)
    // {
    //     // 把arr2也变成一个集合
    //     let s2 = new Set(arr2)
    //     // 判断arr2里是否有arr1里的元素
    //     if(s2.has(item)){
    //         return true
    //     }else {
    //         return false
    //     }
    // }) 
    )
    console.log(result)

3.并集

javascript 复制代码
    let arr1 = [1, 2, 3, 3, 2, 1, 4, 5, 1]
    let arr2 = [1,2,3,3,2,4]
    let result = [...new Set([...arr1,...arr2])]
    console.log(result)

4.差集

javascript 复制代码
    let arr1 = [1, 2, 3, 3, 2, 1, 4, 5, 1]
    let arr2 = [1,2,3,3,2,4]
    // 取反
    let result = [...new Set(arr1)].filter(item=>!(new Set(arr2).has(item)))
    console.log(result);

感谢大家的阅读,如有不对的地方,可以向我指出,感谢大家!

相关推荐
程序员小八77713 分钟前
Go Web 工程化:日志、配置与错误处理中间件,让服务「能上线」
前端·中间件·golang
SquabbyZhu32 分钟前
从 4 个 URL 到 1 个入口:Peaks-Loop 驱动的微前端聚合实践
前端
Hilaku41 分钟前
技术好就能升职是前端圈最大的谎言!
前端·javascript·程序员
lhldsg43 分钟前
树洞倾诉的核心需求与产品定位误区
java·前端·小程序
光影少年1 小时前
react navite高频手写/实操题
前端·javascript·react native·react.js·前端框架
hunterandroid1 小时前
HarmonyOS 弱网与离线优先架构实战:请求队列、本地缓存与增量同步
前端·前端框架
lhldsg1 小时前
宠物同城领养平台开发实战:从需求分析到上线部署指南
java·前端·小程序·需求分析·宠物
hunterandroid1 小时前
Android 内存泄漏排查实战:从 LeakCanary 报警到根因定位
android·前端
leoZ2311 小时前
AI+前端提效-12 AI辅助前端性能优化与监控:从开发到线上全流程提效
前端·人工智能·神经网络·自然语言处理·性能优化·keras·知识图谱
阿图灵1 小时前
LangGraph 实战 03:Workflows 与 Agents——六种工作流模式与智能体实战(附 6 个可运行示例)
java·前端·javascript·工作流·ai agent·智能体·langgraph