六、es6 map
一、map的特点
JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。
为了解决这个问题,ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。
let m = new Map();
let myInfo = {name: 'shangyy', age: 18};
console.log(m.set(myInfo,'person')); // Map { { name: 'shangyy', age: 18 } => 'person' }
console.log(m.get(myInfo)); // person
console.log(m.has(myInfo)); // true
console.log(m.size); //
m.delete(myInfo)
console.log(m) // Map {}
let m= new Map([
['name', 'shangyy' ],
['age', 18],
])
console.log(m) // Map { 'name' => 'shangyy', 'age' => 18 } // 实现原理
let m1 = new Map();
let lists=[
['name', 'shangyy' ],
['age', 18],
];
lists.forEach(([key,value]) => {
m1.set(key,value);
});
console.log(m1); // Map { 'name' => 'shangyy', 'age' => 18 }
let m= new Map();
console.log(m.set(1,'aaa').set(1,'bbb').get(1)); // bbb
console.log(m.set([1],'aaa').get([1])); // undefined
let m = new Map([
[{identity:'master', status: 1}, ()=>{console.log('master-1');}],
[{identity:'master', status: 2}, ()=>{console.log('master-2');}],
[{identity:'gester', status: 1}, ()=>{console.log('gester-1');}],
[{identity:'gester', status: 1}, ()=>{console.log('gester-2');}],
]);
console.log(m);
// Map {
// { identity: 'master', status: 1 } => [Function],
// { identity: 'master', status: 2 } => [Function],
// { identity: 'gester', status: 1 } => [Function],
// { identity: 'gester', status: 1 } => [Function] }
console.log([...m]);
// [ [ { identity: 'master', status: 1 }, [Function] ],
// [ { identity: 'master', status: 2 }, [Function] ],
// [ { identity: 'gester', status: 1 }, [Function] ],
// [ { identity: 'gester', status: 1 }, [Function] ] ]
/*
type: football、basketball
status: 1-开始, 2-进行中 3-结束
*/ const actions=()=>{
return new Map([
['football_1',()=>{console.log('football_1')}],
['football_2',()=>{console.log('football_2')}],
['football_3',()=>{console.log('football_3')}],
['basketball_1',()=>{console.log('basketball_1')}],
['basketball_2',()=>{console.log('basketball_2')}],
['basketball_3',()=>{console.log('basketball_3')}],
]);
}
const onHandleClick=(type, status)=>{
const action = [...actions()].filter(([key,value])=>{
return key === `${type}_${status}`
})
action.forEach(([key,value])=>{
value.call(this);
})
}
onHandleClick('football',2)

六、es6 map的更多相关文章
- ES6 & Map & hashMap
ES6 & Map & hashMap 01 two-sum https://leetcode.com/submissions/detail/141732589/ hashMap ht ...
- js es6 map 与 原生对象区别
区别 object和Map存储的都是键值对组合.但是: object的键的类型是 字符串: map的键的类型是 可以是任意类型: 另外注意,object获取键值使用Object.keys(返回数组): ...
- ES6 map与filter
ES6 map与filter 1.map let arr1 = [1,2,3]; let arr2 = arr1.map((value,key,arr) => { console.log(val ...
- ES6 Map to Array
ES6 Map to Array function differentSymbolsNaive(str) { // write code here. const map = new Map(); co ...
- ES6 Map All In One
ES6 Map All In One Map 字典/地图 Set 集合 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenc ...
- ES6 Map vs ES5 Object
ES6 Map vs ES5 Object Map vs Object https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenc ...
- es6 & map & set
es6 & map & set Map & WeakMap https://developer.mozilla.org/en-US/docs/Web/JavaScript/Re ...
- ES6 Map/WeakMap
最近项目用ES6来写,许多语法都要逐步熟悉呀,今天收藏下Map用法 1.Map构造器 // 字符串作为key, 和JS对象类似 var map = new Map() // set map.set(' ...
- JavaScript学习笔记(六)——Map、Set与iterable
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
随机推荐
- creo2.0安装方法和图文详解教程
Creo2.0是由PTC公司2012年8月底推出的全新CAD设计软件包,整合了PTC公司的三个软件Pro/Engineer的参数化技术.CoCreate的直接建模技术和ProductView的三维可视 ...
- 面试总结——Java篇
前言:前期对Java基础的相关知识点进行了总结,具体参看:Java基础和面试知识点.近期由于笔者正在换工作(ing),因此下面将笔者在面试过程中或笔者朋友面试过程中反馈的题目进行总结,相信弄清楚下面题 ...
- Java面试知识点之数据库篇(一)
前言:数据库的相关知识,在面试中也经常出现,笔者认为非常有必要对此类知识进行相关总结. 1.索引 索引是对数据库表中一列或多列的值进行排序的结构,是帮助数据库高效获取数据的数据结构. 通俗理解:索引就 ...
- 浅析 PHP 中的 Generator
浅析 PHP 中的 Generator Miss Wang php开发案例 前天 何为 Generator 从 PHP 5.5 开始,PHP 加入了一个新的特性,那就是 Generator,中文译为生 ...
- P2819 图的m着色问题(DFS)
思路:最开始的回溯顺序是正常的图遍历的回溯顺序,其实也没有错.但是,因为怎么调都不对,看了题解.下面,请结合题解思路和代码一起感受一下回溯顺序的改变,算法的改变和代码在哪里实现了这种顺序. 回溯顺序: ...
- SQL优化工具SQLAdvisor使用
一.简介在数据库运维过程中,优化SQL是业务团队与DBA团队的日常任务.例行SQL优化,不仅可以提升程序性能,还能够降低线上故障的概率. 目前常用的SQL优化方式包括但不限于:业务层优化.SQL逻辑优 ...
- RabbitMQ学习系列
http://www.cnblogs.com/zhangweizhong/category/855479.html https://www.cnblogs.com/zhangweizhong/p/56 ...
- 转载:遇到BITMAP CONVERSION TO ROWIDS 后解决与思考
今天遇到一个案例,有点价值写下来,以后多看看 SQL: select t.order_id, t.spec_name, t.staff_code, t.staff_code as xxbStaffCo ...
- python3 练习题 day04
'''1.整理装饰器的形成过程,背诵装饰器的固定格式''''''开放封闭原则:为了保证程序的稳定性,和功能的可开放性,在不修改目标函数源代码和调用方式的情况下,对目标函数增加新功能'''# def w ...
- layui之日期和时间组件
参考文档:https://www.layui.com/doc/modules/laydate.html代码片段如下: layui.use('laydate', function(){ var layd ...