es6之Set和Map

一. Set

  • 类似数组,成员值唯一,var s = new Set()
  • s加入值用add,加入时不会发生类型转换(判断两值是否相等用的 ===,但Set会认为NaN等于自己)
  • Set.prototype.constructor === Set , Set.prototype.size返回Set实例的成员总数
  • delete删除某个值,has返回布尔值,clear清空实例
  • keys返回键名的遍历器,values返回键值的遍历器,entries返回键值对的遍历器,
  • Set.prototype[Symbol.iterator] === Set.prototype.values,所以可以直接用for...of遍历set
  • 扩展运算符和Set结合,可以去重,返回数组类型

二. WeekSet

  • 成员只能是对象,方法有add、delete 、has
  • WeakSet 不能遍历,是因为成员都是弱引用,随时可能消失,遍历机制无法保证成员的存在,很可能刚刚遍历结束,成员就取不到了。WeakSet 的一个用处,是储存 DOM 节点,而不用担心这些节点从文档移除时,会引发内存泄漏。

三. Map

  • 类似于对象,键值对的集合,键不限类型,即“值—值”的对应
  • 任何具有Iterator的数据结构都可以当做构造函数的参数
  • 对同一个键赋值,后面的会覆盖掉前面的,Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键
  • size返回成员总数,set(key, value),get(key),has(key),delete(key),clear()
  • 遍历方法:keys(),values(),entries(),forEach()
  • Map.prototype[Symbol.iterator] === Map.prototype.entries
  • Map 结构转为数组结构,比较快速的方法是使用扩展运算符

四. WeakMap

  • 只接受对象作为键名,生成键值对的集合
  • 没有遍历操作,只有get set has delete
  • WeakMap 应用的典型场合就是 DOM 节点作为键名
时间: 2024-10-12 16:36:44

es6之Set和Map的相关文章

es6的Set和Map数据结构

Set 和 Map 数据结构 Set WeakSet Map WeakMap Set § ? 基本用法 ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个构造函数,用来生成 Set 数据结构. const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add

es6入门set和map

ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化. var set = new Set([1, 2, 3, 4, 4]); [...set]console.log(set) // [1, 2, 3, 4] var s = new Set(); [2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)); console.log(s) // 2 3 5 4 在Set内部,两

使用es6的set和map实现数组去重复

var set = new Set();var arr = [1, 2, 3, 3, 2, 1];arr.map(val => set.add(val));// arr.map(function(val) {// set.add(val);// })arr = [];for(i of set) { arr.push(i);}console.log(arr) // [1, 2, 3] function dedupe(array) { return Array.from(new Set(array)

[ES6] When should use Map instead of Object

Use Maps when keys are unknown until runtime: Map: let recentPosts = new Map(); createPost( newPost, (data)=>{ // Key unknown until runtime, so use Map recentPosts.set(data.author, data.message); }); Object: const POST_PRE_PAGE=15; // Keys are previo

es6 的Set和Map

//Set 和Map类似数组 成员唯一(无重复值) set 构造函数 var arr3=[1,2,3,3,4,5,3,5] a,三种添加方式 const arr4=new Set(); // 1. const arr4=new Set().add(1).add(2).add(3); // 2. add() arr4.add(1) arr4.add(2) arr4.add(3) arr4.add(4) //3. const arr5=new Set([1,2,3,4]) //成员的总数size 属

ES6(十)map、set与数组和对象的比较

Map和数组的对比 let map = new Map() let array = [] // 增 map.set('t', 1) array.push({t: 1}) console.log('add', map, array) // 查 let mapExist = map.has('t') let arrayExist = array.find(item => item.t) console.log('get', mapExist, arrayExist) // 改 map.set('t'

es6 set容器和map容器

set容器:多个无序的不可重复的value集合体,是一个构造函数 1.可以去重 2.add(value):添加数据 3.delete(value):删除数据 4.has(value):判断是否包含值,返回true/false 5.clear(value):清空数据 6.size():判断数据长度 map容器:多个无序key不重复的keyvalue的集合体.相当于一个二维数组 let map=new Map([[]]) 1.set(key,value):添加数据 2.get(key):获取数据 3

【ES6】Set和Map数据结构

1.set 类似于数据,但是成员的值都是唯一的,没有重复的值 const s=new Set() let arr=[1,2,3,4] arr.forEach(x=>s.add(x)) for(let i of s){ console.log(i) } const s=new Set([1,2,3,4,5]) [...s] s.size //5 去除数组重复元素 (Array.from可以将Set解构转为数组) [...new Set(array)]    Array.from(set) 去除字符

ES6 之 Set数据结构和Map数据结构 Iterator和for...of循环

ECMAScript 6 入门 Set数据结构 基本用法 ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. var s = new Set(); [2, 3, 5, 4, 5, 2, 2].map(x => s.add(x)); for (let i of s) { console.log(i); } // 2 3 5 4 上面代码通过add方法向Set结构加入成员,结果表明Set结构不会添加重复的值. 向S