数据结构,Map结构的应用实例分析_javascript技巧_脚本之家

本文实例叙述了ES6 Map构造的运用。分享给大家供我们仿效,具体如下:

/**
* 数据结构 Map
*/

Map
数据构造雷同于对象,也是键值对的汇集,然则“键”的节制不防止字符串,各连串型的值都能够当作键。也正是说,Object
布局提供了“字符串—值”的相应,Map
构造提供了“任何—值”的照望,是一种更周详的 Hash
布局完结。固然你须求“键值对”的数据构造,Map 比 Object 更适于。

// —————————————————–
/**
*
词典:是用来囤积不重复key的Hash布局。差别于会集的是,辞典使用的是[键,值]的款型来存款和储蓄数据的。
*
* JavaScript
的靶子(Object:{})只好用字符串当做键。那给它的施用带来了异常的大的节制。
*
*
为了解决那一个标题,ES6提供了Map数据布局。它好像于对象,也是键值对的成团,然而“键”的范围不防止字符串,各连串型的值(包含对象)都得以当作键。也正是说,Object布局提供了“字符串—值”的附和,Map布局提供了“值—值”的呼应,是一种更全面的Hash构造实现。如若你须要“键值对”的数据布局,Map比Object更确切。。
*数据结构,Map结构的应用实例分析_javascript技巧_脚本之家。/

初识map

// const data1 = {};
// const data2 = {};
//
// const obj = {};
//
// obj[data1] = 1;
// obj[data2] = 2;
//
// console.log(obj);

var obj = { 'name':'Joh', qq:'5222', 'full name':'Johnny'};let map = new Map();map .set .set .set .set);console.log;console.log; // 4

// —————————————————–
// 1 怎么着成立八个 Map

Map可以一而再set,就如Set能够一而再add相似,相符有size的api

const map = new Map([
[‘a’, 1],
[‘b’, 2],
[{a: 1}, 3],
[{b: 2}, 4]
]);

map 的delete, has方法

console.log(map);

var obj = { 'name':'Joh', qq:'5222', 'full name':'Johnny'};var arr = [1,2];let map = new Map();// map 可以连续setmap .set .set;var delRes = map.delete; // map不可以连续 deleteconsole.log; // truevar hasBool1 = map.has;console.log; // truevar hasBool2 = map.has;console.log; // trueconsole.log; // 3

// —————————————————–
// 2 Map 类的品质

NaN在map上的特殊性与clear方法

console.log(map.size);

let map = new Map();// map 可以连续setmap .set .set .set; // 覆盖前值console.log; // h2map.clear();console.log; // 0

// —————————————————–
// 3 Map 类的艺术

和set形似,NaN在map上有着唯一性,clear方法会将集结清空

// 1 set(key, valueState of Qatar 设置键名key对应的键值为value,然后重回整个 Map
布局。要是key已经有值,则键值会被更新,不然就新生成该键。

map 的布局函数参数的传递,取值get方法,keys方法,values方法

map.set(‘miaov’, ‘hello’).set(‘new’, ‘fq’);

let map = new Map([ ['name','Joh'], ['age',10]]);let name = map.get;let age = map.get;console.log; // Johconsole.log; // 10let keys = map.keys { console.log; // 分别输出 name 和 age}let values = map.values();for { console.log; // 分别输出 Joh 和 10}

console.log(map);

map与set的原型属性比较和map使用entries方法取得数量的实业

// 2 get(key卡塔尔 get方法读取key对应的键值,即便找不到 key,重返undefined。

let map = new Map([ ['name','Joh'], ['age',10]]);console.log(Set.prototype[Symbol.iterator] === Set.prototype.values); // trueconsole.log(Map.prototype[Symbol.iterator] === Map.prototype.values); // falseconsole.log(Map.prototype[Symbol.iterator] === Map.prototype.entries); // truelet entries = map.entries();for  { console.log; // 分别输出 ['name','Joh'] 和 ['age',10]}

console.log(map.get(‘new’));
console.log(map.get({}));

map内forEach方法和对象传递,以至当中this的运用

// 3 delete(key卡塔尔 删除有个别键,再次来到true。要是剔除失利,重临false。

let map = new Map([ ['name','Joh'], ['age',10]]);var me = { name:"Joh"};map.forEach { console.log; // 分别输出 name Joh 和 "age" 10});console.log;map.forEach { // console.log; // 分别输出 name Joh 和 "age" 10 console.log; // {name: "Joh"} 此处的this就是传递进来的对象}, me);

console.log(map.delete(‘a’));
console.log(map);

更加的多关于JavaScript相关内容感兴趣的读者可查看本站专项论题:《JavaScript数组操作工夫计算》、《JavaScript排序算法总计》、《JavaScript数学生运动算用法计算》、《JavaScript数据布局与算法技巧总结》、《JavaScript遍历算法与技巧计算》、《JavaScript查找算法技术总计》及《JavaScript错误与调度技能总计》

console.log(map.delete(‘a’));

期待本文所述对我们JavaScript程序设计有所帮忙。

// 4 has(keyState of Qatar 方法重返贰个布尔值,表示有些键是不是在脚下Map对象之中。

console.log(map.has(‘new’));
console.log(map.has(‘a’));

// 5 clear(卡塔尔国 撤消全体数据,未有重临值。

// map.clear();
//
// console.log(map);

// 6 keys(卡塔尔国 重临键名的遍历器

console.log(map.keys());

// 7 values(卡塔尔国 重回键值的遍历器

console.log(map.values());

// 8 entries(卡塔尔国 重返键值没有错遍历器

console.log(map.entries());

// 9 forEach(卡塔尔(قطر‎ 使用回调函数遍历各个成员

map.forEach(function (value, key, map){
console.log(key + ‘:’ + value);
});

// —————————————————–
// Map 在行使进程中的一些注意事项:

map.clear();

map.set({}, 1).set({}, 2);

console.log(map);

map.clear();

map.set(NaN, 1).set(NaN, 2);

console.log(map);

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注