es6中的Map函数

基本用法

Set类似于数组,而Map就类似于键值对(Key, Value);

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。

ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

const map = new Map([
    ['name', '张三'],
    ['age', '22']
]);

console.log(map)// Map(2){"name" => "张三", "age" => "22"}
console.log([...map])// [["name", "张三"],["age", "22"]]
操作方法
set(key, value)、get(key)

set()用于添加指定数据,并返回map对象。get()获取指定键名的值

const map = new Map([
    ['name', '张三'],
    ['age', '22']
]);
console.log(map.get('name'))// '张三'
        
//如果添加的键名存在的话,则替换值
console.log(map.set('name','老王'))//Map(2) {"name" => "老王", "age" => "22"}

console.log(map.set('sex','男'))// Map(3) {"name" => "老王", "age" => "22", "sex" => "男"}
has(key)、delete(key)、clear()

这三个和Set()中的方法使用基本一样

has() 查询指定键名的值,有则返回true,无则返回false
delete() 删除指定键名和它的值 ,删除成功返回true,删除失败返回false
clear()清空map对象,没有返回

const map = new Map([
    ['name', '张三'],
    ['age', '22']
]);

console.log(map.has('name'))//true

console.log(map.delete('name'))//true

console.log(map.clear())
console.log([...map])//[]
遍历方法

遍历方法

Map 结构原生提供三个遍历器生成函数和一个遍历方法。

keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():遍历 Map 的所有成员。

const map = new Map([
   ['name', '张三'],
    ['age', '22']
]);

 for (let key of map.keys()) {
     console.log(key);
 }
 // 'name'
 // 'age'

 for (let key of map.values()) {
     console.log(key);
 }
 // '张三'
 // '22'

 for (let key of map.entries()) {
     console.log(key);
 }
 // ['name', '张三']
 // ['age', '22']

 map.forEach((key, value) => console.log(`${key}:${value}`))
 // 'name:张三'
 //'age:22'

Map的应用

与其他数据结构的互相转换
(1)Map 转为对象

如果所有 Map 的键都是字符串,它可以无损地转为对象。

如果有非字符串的键名,那么这个键名会被转成字符串,再作为对象的键名。

function objMap(strMap) {
  let obj = Object.create(null);
  for (let [k,v] of strMap) {
    obj[k] = v;
  }
  return obj;}

const myMap = new Map().set(name, '张三').set(age, '22');
console.log(objMap(myMap))
// {name: "张三", age: "22"}
(2)对象转为 Map
function objMap(obj) {
   let map = new Map();
    for (let k of Object.keys(obj)) {
        map.set(k, obj[k]);
    }
    return map ;
}
console.log(objMap({ 'name':'张三', 'age': '22' }))// Map(2) {"name" => "张三", "age" => "22"}

(3)Map 转为 JSON
function objMap(strMap) {
 	return JSON.stringify(objMap(strMap));
}
let myMap = new Map().set(name, '张三').set(age, '22');
console.log(objMap(myMap))
// '{"name":"张三","age":"22"}'
(4)JSON 转为 Map

JSON 转为 Map,正常情况下,所有键名都是字符串。

function objMap(jsonStr) {
	return objMap(JSON.parse(jsonStr));
}
console.log(objMap('{"name":"张三","age":"22"}'))
// Map {"name" => "张三", "age" => "22"}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值