标签:es6 arr set const map 分钟 new Map
前置知识: 由于传统的 JavaScript
对象只能用字符串当做键,给开发带来很大限制,ES6增加 Map
数据结构,使得各种类型的值(包括对象)都可以作为键。
Maps 和 Objects 的区别
- 一个 Object 的键只能是字符串或者 Symbols,但一个 Map 的键可以是任意值。
- Map 中的键值是有序的(FIFO 原则),而添加到对象中的键则不是。
- Map 的键值对个数可以从 size 属性获取,而 Object 的键值对个数只能手动计算。
- Object 都有自己的原型,原型链上的键名有可能和你自己在对象上的设置的键名产生冲突
1.常用方法:
add: map对象尾部添加元素
const map1= new Map([1,2,3]); //array转set
map1.add(4); //添加元素
get: map查询属性
map1.get(4); //查询key值
has: 是否包含某个元素
map1.has(1); //是否有1
clear:清除所有元素
map1.clear(); //清除set1所有内容
delete:删除某个元素
map1.delete(1); //删除1
size :长度
map.size()
2.Map 实例的遍历方法有:
- keys():返回键名的遍历器。
- values():返回键值的遍历器。
- entries():返回所有成员的遍历器。
- forEach():遍历 Map 的所有成员。
数组去重:
const map = new Map();
map.set('aaa', 100);
map.set('bbb', 200);
for (let key of map.keys()) {
console.log(key);
}
// "aaa"
// "bbb"
for (let value of map.values()) {
console.log(value);
}
// 100
// 200
for (let item of map.entries()) {
console.log(item[0], item[1]);
}
// aaa 100
//...
3.Map与其他类型的转换
object转map
const obj = { foo: 'bar', baz: 42 };
const map = new Map(Object.entries(obj));
map // Map { foo: "bar", baz: 42 }
map转对象
function strMapToObj(strMap) {
let obj = Object.create(null);
for (let [k,v] of strMap) {
obj[k] = v;
}
return obj;
}
const myMap = new Map()
myMap.set('yes', true)
myMap.set('no', false);
let obj = strMapToObj(myMap)
map转数组
const map = new Map();
map.set(1,"foo").set(2,"bar").set(3,"baz");
const arr = [...map];
console.log(arr);
数组转map
const arr = ["foo","bar","baz"];
const arrChangeMap = (arr) => new Map(arr.map( (value,key) => [key,value]));
console.log(arrChangeMap(arr));
标签:es6,arr,set,const,map,分钟,new,Map 来源: https://blog.csdn.net/web_ding/article/details/118357463
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。