JavaScript学习日记5 map和set

map

是一组键值对的结构,具有极快的查找速度。

例如:查找学生的成绩,普通Arry数组操作会创建两个普通的Arry

var name = {‘aaaa‘,‘bbbb‘,‘cccc‘};

var scores = { 96,97,98 }

给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗时越长。

如果用Map实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用JavaScript写一个Map如下:

1 var m = new Map([[‘aaa‘,96],[‘bbb‘,97],[‘ccc‘,98]]); 2 m.get(‘aaa‘) //96

map具有以下的操作方法

 1 var m = new Map();
 2 m.set(‘aaa‘,67) ; //添加一个新得key-value;
 3 m.get(‘aaa‘) //67
 4 m.set(‘bbb‘,67) ;
 5 m.has(‘bbb‘); //是否存在key ‘bbb‘: true
 6 m.delete(‘bbb‘); //删除key‘bbb‘
 7
 8 一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
 9 var m = new Map();
10 m.set(‘a1‘,67) ;
11 m.set(‘a1‘,68) ;
12 m.get(‘a1‘); // 68

set

SetMap类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。

重复元素在Set中自动被过滤:

 1 var s = new Set([1, 2, 3, 3, ‘3‘]); 2 s; // Set {1, 2, 3, "3"} 

注意数字3和字符串‘3‘是不同的元素。

通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果:

1  s.add(4);
2  s;
3 {1, 2, 3, 4};
4 s.add(4);
5  s;
6 {1, 2, 3, 4};

通过delete(key)方法可以删除元素:

1 var s = new Set([1, 2, 3]);
2 s; // Set {1, 2, 3}
3 s.delete(3);
4 s; // Set {1, 2}
时间: 2024-12-28 02:09:50

JavaScript学习日记5 map和set的相关文章

javascript学习日记之变量的作用域

``` 很显然第一个弹出框并没有如我所想弹出的global而是undefined 这是为什么呢? 其实由于函数作用域特性 函数域始终优于全局域 同名的局部变量会覆盖掉全局变量 而第一次调用alert的时候scope还没正式定义 所以为undefined 以上代码可以理解为: ``` function f(){ var scope; alert(scope); var scope ="local"; alert(scope); }; f(); //等价与函数内变量的声明'提前'至函数体顶

JavaScript 学习日记 第一篇 Arrays

Arrays Arrays 的一系列方法 pop & push function myFunction() { var testArray = []; testArray = [1, 2, 3, 4]; alert(testArray.pop()); //show 4 for (var i = 0; i < testArray.length; i++) { alert(testArray[i]); }//show 1 2 3 testArray.push(4); for (var i = 0

JavaScript学习日记3 条件判断

JavaScript使用if () { ... } else { ... }来进行条件判断. 1 var age = 20; 2 if (age >= 18) { // 如果age >= 18为true,则执行if语句块 3 alert('adult'); 4 } else { // 否则执行else语句块 5 alert('teenager'); 6 } 多行条件判断 如果还要更细致地判断条件,可以使用多个if...else...的组合: 1 var age = 3; 2 if (age &

JavaScript学习日记2 对象

JavaScript的对象是一种无序的集合数据类型,它由若干键值对组成. JavaScript用一个{...}表示一个对象,键值对以xxx: xxx形式申明,用,隔开. 如: var xiaoming={name:'小明',birth:1990,school:'No.1 Middle School', height:1.70,weight:65,score:null} 注意:最后一个键值对不需要在末尾加,,如果加了,有的浏览器(如低版本的IE)将报错. 访问属性是通过.操作符完成的,但这要求属性

javascript学习日记1

1.JavaScript:写入 HTML 输出document.write("<h1>This is a heading</h1>");document.write("<p>This is a paragraph</p>"); 2.JavaScript:对事件作出反应<button type="button" onclick="alert('Welcome!')">点

javaScript学习日记 1 数组

indexOf 与String类似,Array也可以通过indexOf()来搜索一个指定的元素的位置: var arr = [10, 20, '30', 'xyz']; arr.indexOf(10); // 元素10的索引为0 arr.indexOf(20); // 元素10的索引为1 arr.indexOf(30); // 元素30没有找到 arr.indexOf('30'); // 元素'30'的索引为2 slice slice()就是对应String的substring()版本,它截取A

javascript 学习日记

alert(0.1 + 0.2); //不是0.3 alert(NaN + NaN); //不是false  alert(isNaN(NaN)); //true alert(isNaN(1)); //false alert(isNaN('1')); //false alert(isNaN('blue')); //true alert(isNaN(true)); //false

JavaScript学习总结(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例

JavaScript学习总结(一)--延迟对象.跨域.模板引擎.弹出层.AJAX示例 目录 一.AJAX示例 1.1.优点 1.2.缺点 1.3.jQuery AJAX示例 二.延迟对象(Deferred) 2.1.回调函数 2.2.deferred.done 三.跨域 3.1.什么是跨域 3.2.JSONP跨域 3.3.jQuery使用JSONP跨域 3.4.跨域资源共享(CORS) 3.5.小结 四.弹出层 五.模板引擎 5.1.Hello World 5.2.方法 5.3.与AJAX结合应

ArcGIS API for JavaScript 学习笔记 (一) --第一个WebGIS应用程序

说明:本地部署后续我会尝试. 简单介绍: 开发环境是Visual Studio 2012,因为它为所有的.aspx文件..htm文件以及外部的.js文件提供了IntelliSense(智能提示),相当于其他软件的代码自动补全功能,非常方便.接下来是我的第一个Javascript API 应用程序.ESRI在其arcgis online中提供了在线的ArcGIS API for JavaScript,在web应用中直接引用即可,无需下载安装:当然也可以下载API,然后部署到自己的web服务器,在这