ES6 Set和Map
Set
特性:
es6新增、数组去重、返回一个Set实例、入参是一个数组(new Set([1,2,3]))
属性:
size
: 获取元素数量
方法:
add(value)
: 添加元素,返回Set实例本身delete(value)
: 删除元素,返回删除结果(布尔值)has(value)
: Set实例是否有此元素,返回查询结果clear()
: 清除所有元素,没有返回值
const setOb = new Set([1,2]) setOb.add(2).add(3) console.log(setOb) // {1, 2, 3} console.log(setOb.size) // 3 console.log(setOb.has(1)) // true console.log(setOb.has(3)) // true console.log(setOb.has(4)) // false setOb.delete(2) console.log(setOb) // {1, 3} console.log(setOb.has(2)) // false setOb.clear() console.log(setOb) // Set(0) {size: 0} 复制代码
遍历Set实例
keys()
: 返回键名的遍历器values()
: 返回键值的遍历器,Set中键值键名同值,因此keys()和values()返回结果一致entries()
: 返回键值对的遍历器forEach()
: 使用回调函数遍历每个元素
const setOb = new Set(['派大星','海绵宝宝', '章鱼哥']) console.log(setOb.keys()) // SetIterator {'派大星', '海绵宝宝', '章鱼哥'} for (let item of setOb.keys()) { console.log(item) } // 派大星 // 海绵宝宝 // 章鱼哥 console.log(setOb.values()) // SetIterator {'派大星', '海绵宝宝', '章鱼哥'} for (let item of setOb.values()) { console.log(item) } // 派大星 // 海绵宝宝 // 章鱼哥 console.log(setOb.entries()) // SetIterator {'派大星' => '派大星', '海绵宝宝' => '海绵宝宝', '章鱼哥' => '章鱼哥'} for (let item of setOb.entries()) { console.log(item) } // ['派大星', '派大星'] // ['海绵宝宝', '海绵宝宝'] // ['章鱼哥', '章鱼哥'] // 正常情况下forEach不能直接遍历对象 console.log(setOb) // Set(3) {'派大星', '海绵宝宝', '章鱼哥'} setOb.forEach((value, key) => { console.log('key:' + key + ' value:' + value) }) // key:派大星 value:派大星 // key:海绵宝宝 value:海绵宝宝 // key:章鱼哥 value:章鱼哥 复制代码
Map
特性:
es6新增、返回一个初始化实例、参数可以是数组或其他可迭代对象(null会被当做undefine)
属性:
size
: 获取元素数量
方法:
set(key, value)
: 设置元素key和valueget(key)
: 通过元素key获取元素valuehas(key)
: 通过元素key判断元素是否存在delete(key)
: 通过key删除对应元素clear()
: 清空所有元素
const map = new Map() console.log(map) // Map(0) {size: 0} map.set('pdx', '派大星') console.log(map) // map.set('hmbb', '海绵宝宝') console.log(map) // Map(1) {'pdx' => '派大星'} console.log(map.size) // 2 console.log(map.get('pdx')) // 派大星 console.log(map.has('pdx')) // true map.delete('pdx') console.log(map.has('pdx')) // false map.clear() console.log(map) // Map(0) {size: 0} 复制代码
遍历Map实例
keys()
: 返回键名的遍历器values()
: 返回键值的遍历器entries()
: 返回所有元素的遍历器forEach()
: 使用回调函数遍历每个元素
const map = new Map([['pdx', '派大星'], ['hmbb', '海绵宝宝']]) console.log(map) // Map(2) {'pdx' => '派大星', 'hmbb' => '海绵宝宝'} map.set('zyg', '章鱼哥') console.log(map) // {'pdx' => '派大星', 'hmbb' => '海绵宝宝', 'zyg' => '章鱼哥'} console.log(map.size) // 3 for (let key of map.keys()) { console.log(key) } // pdx // hmbb // zyg for (let value of map.values()) { console.log(value) } // 派大星 // 海绵宝宝 // 章鱼哥 for (let item of map.entries()) { console.log(item[0], item[1]) } // pdx 派大星 // hmbb 海绵宝宝 // zyg 章鱼哥 map.forEach((value, key) => { console.log(key, value) }) // pdx 派大星 // hmbb 海绵宝宝 // zyg 章鱼哥
作者:我不是派大星
链接:https://juejin.cn/post/7025901553454153764