【前端】ES6:Set与Map

文章目录

  • [1 Set结构](#1 Set结构)
    • [1.1 初识Set](#1.1 初识Set)
    • [1.2 实例的属性和方法](#1.2 实例的属性和方法)
    • [1.3 遍历](#1.3 遍历)
    • [1.4 复杂数据结构去重](#1.4 复杂数据结构去重)
  • [2 Map结构](#2 Map结构)
    • [2.1 初识Map](#2.1 初识Map)
    • [2.2 实例的属性和方法](#2.2 实例的属性和方法)
    • [2.3 遍历](#2.3 遍历)

1 Set结构

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

1.1 初识Set

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

let s2 = new Set()
s2.add(1)
s2.add(2)
s2.add(3)
console.log(s2)

1.2 实例的属性和方法

  • size:返回Set实例的成员总数。
  • Set.prototype.add(value):添加某个value。
  • Set.prototype.delete(value):删除某个value,返回一个布尔值,表示删除是否成功。
  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
  • Set.prototype.clear():清除所有成员,没有返回值。

1.3 遍历

  • Set.prototype.keys():返回键名的遍历器。
  • Set.prototype.values():返回键值的遍历器。
  • Set.prototype.entries():返回键值对的遍历器。
  • Set.prototype.forEach():遍历每个成员。

1.4 复杂数据结构去重

js 复制代码
function uni(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
        }
    })
}

var arr = [1, 2, 3, "data", {name: "kerwin"}, {name: "kerwin"}, [1, 2], [3, 4], [3, 4]]
console.log(uni(arr))

2 Map结构

类似于对象,也是键值对的集合,但是"键"的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

2.1 初识Map

js 复制代码
let m1 = new Map()
m1.set("name","kerwin")
m1.set({a:1},"大连")

console.log(m1)

let m2= new Map([
    ["name","kerwin"],
    [{a:1},"大连"]
])
console.log(m2)

2.2 实例的属性和方法

  • size:返回Map结构的成员总数。
  • Map.prototype.set(key,value):添加key对应得value,返回Map结构本身。
  • Map.prototype.get(key):获取key对应的value
  • Map.prototype.delete(key):删除某个键(键名+键值)
  • Map.prototype.has(key):某个键是否在当前Map对象之中。
  • Map.prototype.clear():清除所有成员,没有返回值。

2.3 遍历

  • Map.prototype.keys():返回键名的遍历器。
  • Map.prototype.values():返回键值的遍历器。
  • Map.prototype.entries():返回所有成员的遍历器。
  • Map.prototype.forEach():遍历Map的所有成员。
相关推荐
后海 0_o几秒前
2025前端微服务 - 无界 的实战应用
前端·微服务·架构
Scabbards_2 分钟前
CPT304-2425-S2-Software Engineering II
前端
小满zs7 分钟前
Zustand 第二章(状态处理)
前端·react.js
程序猿小D10 分钟前
第16节 Node.js 文件系统
linux·服务器·前端·node.js·编辑器·vim
萌萌哒草头将军12 分钟前
🚀🚀🚀Prisma 发布无 Rust 引擎预览版,安装和使用更轻量;支持任何 ORM 连接引擎;支持自动备份...
前端·javascript·vue.js
狼性书生26 分钟前
uniapp实现的简约美观的星级评分组件
前端·uni-app·vue·组件
书语时29 分钟前
ES6 Promise 状态机
前端·javascript·es6
拉不动的猪1 小时前
管理不同权限用户的左侧菜单展示以及权限按钮的启用 / 禁用之其中一种解决方案
前端·javascript·面试
西陵1 小时前
前端框架渲染DOM的的方式你知道多少?
前端·javascript·架构
小九九的爸爸1 小时前
我是如何让AI帮我还原设计稿的
前端·人工智能·ai编程