ES6-Set and Map】的更多相关文章

Map结构的目的和基本用法 JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键.这给它的使用带来了很大的限制.   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Doc…
ES5 模拟Set 与 Map 集合 Set 常用于检查对象中是否存在某个键名 Map集合常被用于获取已存的信息 所有对象的属性名必须是字符串,那么必须确保每个键名都是字符串类型且在对象中是唯一的 数值类型和对象类型的键名会自动转换为字符串类型 key1和key2被转换为对象对应的默认字符串"[object Object]" 本意是检查count属性是否存在,value为1,为真,若如果value为0或者不存在,if都不会执行 ES6 中的Set集合 一种有序列表,其中含有一些相互独立…
集合的概念以及和数组的区别 其实数组也是集合, 只不过数组的索引是数值类型.当想用非数值类型作为索引时, 数组就无法满足需要了. 而 Map 集合可以保存多个键-值对(key-value), Set 集合可以保存多个元素. 对Map 和 Set 一般不会逐一遍历其中的元素. Map 一般用来存储需要频繁取用的数据, Set 一般用来判断某个值是否存在其中. ES 5 中对 Map 和 Set 的模拟方法 在ES 5 中,没有 Set和Map集合, 一般使用对象来模拟这两种集合, 对象的属性作为键…
这篇文章主要介绍了ES6学习笔记之Set和Map数据结构,结合实例形式详细分析了ECMAScript中基本数据结构Set和Map的常用属性与方法的功能.用法及相关注意事项,需要的朋友可以参考下   本文实例讲述了ES6学习笔记之Set和Map数据结构.分享给大家供大家参考,具体如下: 一.Set ES6提供了新的数据结构Set.类似于数组,只不过其成员值都是唯一的,没有重复的值. Set本身是一个构造函数,用来生成Set数据结构. 1 . Set函数可以接受一个数组(或类似数组的对象)作为参数,…
ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值. Set 本身是一个数据结构,用来生成Set 数据结构. const s = new Set(); [2,3,5,4,5,2,2,2].forEach(x=>s.add(x)); for(let i of s) { console.log(i); } // 2 3 5 4   Set 函数可以接受一个数组作为参数. 可以利用去除数组重复成员的方法. [...new Set(array)] // 去除数组重复变量成…
Set类型可以用来处理列表中的值,但是不适用于处理键值对这样的信息结构.ES6也添加了Map集合来解决类似的问题 一.Map集合 JS的对象(Object),本质上是键值对的集合(Hash结构),但是传统上只能用字符串当作键.这给它的使用带来了很大的限制 为了解决这个问题,ES6提供了Map数据结构.它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键.也就是说,Object结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完…
上一篇文章讲了set和weakSet,这节咱就讲Map和weakMap是什么?这两篇文章并没有什么联系,主要知识用法类似而已.嘿嘿,是不是感觉舒服多了. 什么是Map 介绍什么是Map,就不得不说起Object对象,我们都知道Object对象是键值对的集合: //Object对象 {"name":"前端君","gender":1} ES5中的key键名的类型要求一定是字符串,当然,ES6已经允许属性名的类型是Symbol,前面的文章有所讲解 现在…
在ES6之前JavaScript 里面本身没有map对象,但是用JavaScript的Array.Object来模拟实现Map的数据结构. 现在已经有Map对象了,这里记录一下之前的写法 Array方法 /* * MAP对象,实现MAP功能 * * 接口: * size() 获取MAP元素个数 * isEmpty() 判断MAP是否为空 * clear() 删除MAP所有元素 * put(key, value) 向MAP中增加元素(key, value) * remove(key) 删除指定KE…
本文作为ES6入门第十三章的学习整理笔记,可能会包含少部分个人的理解推测,若想阅读更详细的介绍,还请阅读原文ES6入门 一.set数据结构 1.set不接受重复值 ES6新增了Set构造函数用于创建set数据结构,这种结构类似于数组,但有很大的一个区别就是,set数据结构不接受重复值,每个值都是唯一的. 我们可以通过Set构造函数快速创建一个set数据结构,顺便打印看看究竟长什么样: let s = new Set(); console.dir(s); 那么可以看到,set实例具有一个size属…
一.Set集合创建Set实例:let set = new Set();1.特性:a.Set本身是一个构造函数,用来生成Set数据结构[类比数组结构]b.Set函数可以接受具有Iterable接口的数据结构作为参数c.Set集合中的成员是唯一的[即不可重复] 2.Set实例的相关属性及方法a.属性Set.prototype.constructor:构造函数,默认就是Set函数 Set.prototype.size:返回Set实例的元素的个数    [set.size] b.方法add(value)…
自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [...new Set(arr)] } console.log(unique(arr)) // [1, 2, 3, 4] 但是当数组的项不再是简单的数据类型时,比如是对象时,这种方法就会导致错误,比如下面的结果 let arr = [ { name: 'a', num: 1}, { name: 'b',…
一.Set遍历方法: set.key() set.values() set.entries() 二.Set例子: var s = new Set(); var arr = [1,1,2,3,6,8,8,9,10]; arr.map( x => s.add(x) ); for (i of s) { console.log(i); } 打开结果:通过add,Set结构不会添加重复的值. PS:Set对存入数据 1和'1',是不识别,需求用 "===" . 三.Map 1.Map结构的…
WeakMap: is a type of Map where only objects can be passed as keys. Primitive data type -- such are string, numbers, booleans, etc --- are not allowed. let user = {}; let comment = {}; let mapSettings = new WeakMap(); mapSettings.set(user, "user"…
ECMAScript 6中的Map类型是一种存储着许多键值对的有序列表.键值对支持所有的数据类型. 键 0 和 ‘0’会被当做两个不同的键,不会发生强制类型转换. 如何使用Map? let map = new Map(); 常用方法: set( 键,值 ):  添加新的键值对元素 get( 键 ): 获取键对应的值,如果这个值不存在,返回undefined let map = new Map(); map.set( '0', 'ghostwu' ); map.set( 0, 'ghostwu'…
//数据结构对比 增查改删 { //map.set和Object let item = {t:1}; let map = new Map(); let set = new Set(); let obj = {}; //增 map.set('t',1); set.add(item); obj['t'] = 1; console.info('map-set-obj',map,set,obj);//{"t" => 1};0:value:{t: 1};{t:1}; //查 console…
//数据结构对比 增查改删 { //map和array对比 let map = new Map(); let array = []; //增 map.set('t',1); array.push({t:1}); console.info('map-array',map,array) //{"t"=>1};-[0:{t:1}] //查 let map_exist = map.has('t'); let array_exist = array.find(item=>item.t…
//Map与Array的对比 { let map=new Map(); let array=[]; //增 map.set('t',1); array.push({t:1}); console.info('map-Array',map,array); //查 let map_exist=map.has('t'); let array_exist=array.find(item=>item.t); console.info('map-Array',map_exist,array_exist);//…
//Set { let list=new Set(); list.add(5);//添加 list.add(7); //属性size就是长度 console.log('size',list.size); } { let arr = [1,2,3,4,5]; let list = new Set(arr); console.log(list.size); } { //去重 let list = new Set(); list.add(1); list.add(2); list.add(1); co…
1. Set Set是一个集合,里面的值都是唯一的,没有重复的.Set中可以是任何数据类型,并且添加数据时会进行严格比较,重复数据无法加入. 2. WeakSet 弱引用Set.只能存储对象,不能存储其他类型.且只保持对其中对象的弱引用,若外部无对此对象的引用,或者对象被删除,则WeakSet中将不再有此对象. 因为成员都是弱引用,随时可能消失,遍历不能保证成员的存在.所以 WeakSet 不能遍历 3. Map Map是一个键值对. Map与Object的区别是: 1. Object的key只…
使用Object.entries const obj = { foo: 'bar', baz: 42 }; const map = new Map(Object.entries(obj)); map // Map { foo: "bar", baz: 42 }…
一.map,简单的键值对映射,具有很快的查找速度 1. 初始化map,map的键名可以使用其他数据类型,对象的属性名只能使用字符串或symbol 使用二维数组 var m = new Map([['name', 'LQW'], ['age', 23], [123, '我的键名是数字类型']]);m.get('name'); // LQW 初始化一个空Map var m = new Map();m.set('name', 'LQW');m.set('age', 23);m.set(123, '我的…
var  value = arr.map(function (x) {return x * x}); const arr = [1,2,3,4]; const value = arr.map(x => x * x); //value = {[[1,1],[2,4],[3,9],[4,16]]}   nationArr = [{'id':1,'name':'汉族'},...] this.nationArr.find(n => n.name === '汉族').id = 1…
Map Map对象保存键值对.任何值(对象或者原始值) 都可以作为一个键或一个值.构造函数Map可以接受一个数组作为参数. Map和Object的区别 一个Object 的键只能是字符串或者 Symbols,但一个Map 的键可以是任意值. Map中的键值是有序的(FIFO 原则),而添加到对象中的键则不是. Map的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算. Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突. Map…
今天小编和大家一起探讨一下引用类型中的map,在其中会有一些map与数组联合应用,还有和map类似的weakmap类型的说明,这篇文章同时也增加了一些操作数组的办法和实际应用.大家也可以关注我的微信公众号,蜗牛全栈. 一.map的声明 let s = new Set([1,2,3]) console.log(s) // Set(3){1,2,3} // map中的数据不会出现重复的情况,如果重复,会将重复的元素去掉.可以应用这一特性,对数组进行去重等处理 let s = new Set([1,2…
返回一个数组,其内容是把原数组中对应元素的平均海拔转换成其对应的轨道周期. 原数组中会包含格式化的对象内容,像这样 {name: 'name', avgAlt: avgAlt}. 思路: 直接使用公式就行了. let orbitalPeriod = arr => { const GM = 398600.4418,earthRadius = 6367.4447; for(let i = 0;i < arr.length;i++){ let r = (arr[i].avgAlt + 6367.44…
Set  1.Set特点 类数组 新增数据结构 是构造函数 成员值唯一  注重独一无二的特征 2.Set实例的常用方法 console.log('------------Set操作方法------------'); let set1 = new Set([1, 2, 3, 3]).add(42).add(68).add({ a: 2 }).add({ a: 2 }).add(NaN).add(NaN); console.log( "set1",set1)//Set(8) {1, 2,…
一:Set用法: ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值. (1).打印:console.log var data = new Set([1,2,3]); //Set {1, 2, 3} console.log(data); (2).添加: add data.add(4); //Set {1, 2, 3, 4} console.log(data); //Set不会重复添加成员 data.add(4); //Set {1, 2, 3, 4} consol…
1.set ES6提供了新的数据结构Set.它类似于数组,但是成员的值都是唯一的,没有重复的值,set本身就是构造函数,所以可以通过new的方式来创建对象 // 例一 可以做数组去重用 var set = new Set([1, 2, 3, 4, 4]); [...set] // [1, 2, 3, 4] 那么set内部是怎么判断两个数据相不相等呢?使用的算法叫做"Same-value equality",它类似于精确相等运算符(===),所以 5 和 '5'是不同的,它和(===)唯…
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…
Map.Set都是ES6新的数据结构,他们都是新的内置构造函数.也就是说typeof的结果,多了两个. 他们是什么:  Set是不能重复的数组.    Map是可以任何东西当做键的对象: ES6 提供了新的数据结构 Set.它类似于数组,但是Set成员的值都是唯一的,没有重复的值. let m = new Set(); m.add(1); m.add(2); m.add(3); m.add(3); m.add(3); m.add(4); m.add(5); console.log(m); 集合中…