ES6-Set-Map对象小记

Set 对象

添加元素

js 复制代码
set.add(value)

常用方法

方法 描述
has() 判断 Set 对象中特定元素是否存在
delete() Set 对象中删除指定元素
clear() 清空 Set 对象

遍历方法

很容易想到使用set.forEach(callBackFn, thisArg)方法来进行遍历,其中callBackFn回调的形式如下:

js 复制代码
set.forEach(function (value, key, set) {
  // value为set中的元素值
  // key与value相同
  // set对象本身
}, thisArg)
//  thisArg 为this对象,为可选参数

回调的参数依次为:

  • value
  • key
  • set

其中,为了和其他有key的对象保持一致,这里使用的value占位了第二个参数,所以key就是value的值。

Map 对象

创建方法

js 复制代码
// 伪代码:
new Map()
new Map(可迭代对象)

// 实际代码的演示:
const map = new Map([['book', 3], ['pen', 5]])
console.log(map)

通常会传入一个二维数组作为可迭代对象,每个一位数组都是一个两元素的小数组,作为可迭代对象的键值对。

添加元素

js 复制代码
// 伪代码
map.set(键, 值);

// 实际代码的演示:
const map = new Map()
map.set([1, 2, 3], '书籍')
map.set(false, '日用品')
map.set(3, '化妆品')
console.log(map)

获取元素

js 复制代码
// 伪代码:
map.get(key)

// 实际演示:
const map = new Map()
map.set(false, '日用品')
console.log(map)

const item = map.get(false)
console.log(item)

常用方法

方法 描述
has() 判断 Map 对象中指定键对应的条目是否存在
delete() Map 对象中删除指定键对应的条目
clear() 清空 Map 对象

对应的实例:

js 复制代码
let bookstore = new Map()
bookstore.set('《活着》', '余华')
bookstore.set('《平凡的世界》', '路遥')
bookstore.set('《三体》', '刘欣慈')
bookstore.set('《猫和老鼠》', '电影')
console.log('《活着》是否存在:', bookstore.has('《活着》'))

bookstore.delete('《猫和老鼠》')
console.log('《猫和老鼠》是否存在:', bookstore.has('《猫和老鼠》'))

bookstore.clear()
console.log(bookstore)

遍历方法

其中callBackFn回调中的参数依次为value,key,map自身,可以看得出来,ES6forEach方法参数上的统一性。

js 复制代码
// 伪代码:
map.forEach(callbackFn, thisArg)

// 参考示例:
const userName = new Map([[1, '小红'], [2, '小蓝'], [3, '小白']])
userName.forEach(function (value, key) {
  console.log('当前条目的键为:', key)
  console.log('当前条目的值为:', value)
})

结语

实际上,还有weakSetweakMap这两种垃圾回收机制更强的弱引用SetMap,本文不再展开。

相关推荐
顾安r5 小时前
11.8 脚本网页 星际逃生
c语言·前端·javascript·flask
Hello.Reader5 小时前
Data Sink定义、参数与可落地示例
java·前端·网络
im_AMBER5 小时前
React 17
前端·javascript·笔记·学习·react.js·前端框架
一雨方知深秋5 小时前
2.fs模块对计算机硬盘进行读写操作(Promise进行封装)
javascript·node.js·promise·v8·cpython
谷歌开发者6 小时前
Web 开发指向标 | Chrome 开发者工具学习资源 (六)
前端·chrome·学习
一晌小贪欢6 小时前
【Html模板】电商运营可视化大屏模板 Excel存储 + 一键导出(已上线-可预览)
前端·数据分析·html·excel·数据看板·电商大屏·大屏看板
发现你走远了6 小时前
连接模拟器网页进行h5的调试(使用Chrome远程调试(推荐)) 保姆级图文
前端·chrome
街尾杂货店&7 小时前
css - 实现三角形 div 容器,用css画一个三角形(提供示例源码)简单粗暴几行代码搞定!
前端·css
顺凡8 小时前
删一个却少俩:Antd Tag 多节点同时消失的原因
前端·javascript·面试
小白路过8 小时前
CSS transform矩阵变换全面解析
前端·css·矩阵