Set 对象
添加元素
常用方法
方法 | 描述 |
---|
has() | 判断 Set 对象中特定元素是否存在 |
delete() | 从 Set 对象中删除指定元素 |
clear() | 清空 Set 对象 |
遍历方法
很容易想到使用set.forEach(callBackFn, thisArg)
方法来进行遍历,其中callBackFn
回调的形式如下:
1 2 3 4 5 6
| set.forEach(function (value, key, set) { }, thisArg)
|
回调的参数依次为:
其中,为了和其他有key
的对象保持一致,这里使用的value
占位了第二个参数,所以key
就是value
的值。
Map 对象
创建方法
1 2 3 4 5 6 7
| new Map() new Map(可迭代对象)
const map = new Map([['book', 3], ['pen', 5]]) console.log(map)
|
通常会传入一个二维数组作为可迭代对象,每个一位数组都是一个两元素的小数组,作为可迭代对象的键值对。
添加元素
1 2 3 4 5 6 7 8 9
| map.set(键, 值);
const map = new Map() map.set([1, 2, 3], '书籍') map.set(false, '日用品') map.set(3, '化妆品') console.log(map)
|
获取元素
1 2 3 4 5 6 7 8 9 10
| 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 对象 |
对应的实例:
1 2 3 4 5 6 7 8 9 10 11 12
| 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自身
,可以看得出来,ES6
在forEach
方法参数上的统一性。
1 2 3 4 5 6 7 8 9
| map.forEach(callbackFn, thisArg)
const userName = new Map([[1, '小红'], [2, '小蓝'], [3, '小白']]) userName.forEach(function (value, key) { console.log('当前条目的键为:', key) console.log('当前条目的值为:', value) })
|
结语
实际上,还有weakSet
和weakMap
这两种垃圾回收机制更强的弱引用Set
和Map
,本文不再展开。