javaScript中的 Set 和 Map

小结

  • 什么是Set 和 Map
  • Set 和 Map 的方法和相关
  • weakSet 和 weakMap

什么是 Set 和 Map

这两个就是 Es6 新增的两种 特殊的 数据集合, 以前只有一种 数组, 现在怎加了两种特殊的 Set 特殊在会自动去重, Map 是键值对集合 但是 键可以是 任意类型

Set 和 Map 相关内容

1. Set

创建属性和方法

let set = new Set()
set.add('1'),
set.add(1)
set.add(1)
console.log(set.size) // 2
set.has('1') // true
set.delete('1')
set.clear()

let set1 = new Set([1,2,3])

set 一般用来判断是否存在某个元素, set 中的数据去重使用的是 Object.is() 规则来判断是否相等的也就是说 1 和 ‘1‘ 是不同的元素

Set 转换成数组

let set = new Set([1,2])
Array.form(set)
[...set]
Array.prototype.slice.call(set)

2. Map

创建, 属性 和 方法

let map = new Map()
map.set(1 , 1)
map.size // 1
map.has(1)
map.get(1)
map.delete(1)
map.clear()

let map1 = new Map([ [1,2], [2,3] ])

map 是键值对的集合, 但是 键可以是任意类的值, 不像 对象 只能是字符串, 如果不是还会被转换成字符串

3. 遍历

js中的三种集合, 数组, Set , Map , 都拥有默认的迭代器属性, 所以 你可以通过 for-of 来遍历 这三个集合

weakSet 和 weakMap

首先分析这两者 出现的原因, 当 set 或者 map 中存储的是引用类型的数据, 如果外部对这个数据的引用全部消失, 但是 set 和 map 中还存在着唯一的引用, 这就会 影响垃圾回收机制, 无法被回收, 于是 出现了 这两个 数据类型

特性,

  • 当内部存储的引用类型是唯一引用后,会自动移除
  • 没有 size属性 不可以迭代
  • weakSet 的add() 方法只能接受 对象
  • weakMap 的键只能是对象

原文地址:https://www.cnblogs.com/ADong4031/p/12096985.html

时间: 2024-11-07 14:53:31

javaScript中的 Set 和 Map的相关文章

JavaScript中的Array和Map集合对象

JavaScript中的Array和Map集合对象 1.Array 用于在单个变量中存储多个值 创建 new Array(); new Array(size); new Array(element0, element1, ..., elementn); 长度 arr.length;设置或返回数组中元素的数目. 赋值 var arr = new Array(); arr[0] = '555'; arr[1] = '666'; 遍历 arr.forEach( function(a){ documen

javascript中的set和map

set与数学中集合的定义一样 具有互异性和无序性(没有索引) 重复元素在Set中自动被过滤: var s = new Set([1, 2, 3, 3, '3']); s; // Set {1, 2, 3, "3"} *类似python中的集合 map是一组键值对: var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]); m.get('Michael'); // 95 *类似python中的字典

javascript中的Set和Map数据结构

Set数据结构 类似数组,所有的数据都是唯一的,没有重复值,它本身是一个构造函数 size 数据长度 add() 添加一个数据 delete() 删除一个数据 has() 查找一个数据 clear() 删除所有数据 //重复的数据会被删除 let set = new Set([1,1,2,3,4]); console.log(set) console.log(set.size)//4 //添加 console.log(set.add(5));//Set(5) {1, 2, 3, 4, 5} //

javascript与jQuery的each,map回调函数参数顺序问题

<script> var arr = [2,3,6,7,9]; //javascript中的forEach 和 map方法 arr.forEach(function(value,index){//(值,索引) console.log(value); }); arr.map(function(value,index){//(值,索引) console.log(value); }); //jQuery的 each map方法 $(arr).each(function(index,value){//

javascript中使用Map

mis.comm.js.Map = function() { this.elements = new Array(); //获取MAP元素个数 this.size = function() { return this.elements.length; } //推断MAP是否为空 this.isEmpty = function() { return (this.elements.length < 1); } //删除MAP全部元素 this.clear = function() { this.el

由实现JavaScript中的Map想到的

项目中要用到JavaScript中的Map数据类型,它不像JDK那样有自带的,怎么办?搜了找到一个不错的(http://darkmasky.iteye.com/blog/454749).用这个可以满足项目中要求.在找的过程中,发现这么个轻量级的实现.http://www.iteye.com/topic/196610帖子中,二楼myy的回复内容.应该说这个简单地实现可以满足我的一些需求,但它少了size方法. 在这个简单实现的基础上,自己能不能加一个size方法呢?而不地通过封装Array那样的重

javascript中模拟实现java语言中的map

//javascript中模拟实现java语言中的map 实现代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script type="text/javascript"> //private var obj={};//空的对象容器,用于承装键值对 function Map() { //put方法 th

JavaScript中模拟实现Java的集合类Map的常用方法

JavaScript中模拟实现Java的集合类Map的常用方法 (function Map(){ var size = 0, map = {}, strundefined; function MapCache() { } MapCache.prototype.put = function (key, value){ if ( key === null || key === undefined){ throw new Error(" null or undefined is not a illeg

【前端】javascript中10常用的个小技巧总结

javascript中10常用的个小技巧总结 本文转自:http://www.cnblogs.com/libin-1/p/6756393.html 1. new Set() 可能有人知道ES6中提供了新的数据结构 Set,但是能够灵活运用的人或许不多.利用Set数据结构我们能够轻松的去重一个数组,比如: let arr = [1, 2, 2, 3]; let set = new Set(arr); let newArr = Array.from(set); // Array.from方法可以将