Map类型的基本运用

map结构可以看作是对象的升级。

Map类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种 类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应, Map 结构提供了“值—值”的对应,是⼀种更完善的 Hash 结构实现。如果你需要“键值对”的数 据结构,Map ⽐ Object 更合适。

Map的原型方法:

        Map.prototype.size 获取集合键值对个数

        Map.prototype.set(key, value) 向集合中设置⼀个键值对

        Map.prototype.get(key) 从集合中通过key获取value

        Map.prototype.has(key) 判断集合中是否包含key指定的键

        Map.prototype.delete(key) 通过key删除⼀个键值对

        Map.prototype.clear() 清空map集合

        Map.prototype.keys() 获取map集合key值的迭代器

        Map.prototype.values() 获取map集合value值的迭代器

        Map.prototype.entries() 获取map集合entry的迭代器

        Map.prototype.forEach() 迭代

方法示例:

示例一:

let obj = {
  name:"terry",
  age:12
}
let entries = Object.entries(obj)
//Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组,
//其排列与使用 for...in 循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)。
let map = new Map(entries);
map.set('gender','male')
console.log(map.size,map);//输出键值对个数和map集合
console.log([...[...map][1]][0]);//输出第一组数据的key
let arr=map.entries();//获取map集合entry的迭代器
console.log(arr); //输出为set
let mapKeys = map.keys();
let mapValues = map.values();
// console.log(mapKeys,mapValues);
map.clear();//对原集合进行修改
map=new Map([[1,'zhangsan'],[2,'lisi'],[3,'wnagwu']]);
map.delete(1);
map.has(2);
console.log(map.get(2));//lisi
console.log(map.get(1));//undefine

实例二:建立一个购物车。具有增加商品,删除商品,修改数量,计算总价的方法。

class Goods {
  constructor(id,name,price){
    this.id = id;
    this.name = name;
    this.price = price;
  }
}
let fbm = new Goods(1,'北京方便面',2);
let kqs = new Goods(2,'怡宝矿泉水',2.5)

class Shopcar {
  car ; // 购物车
  constructor(){
    // <Goods, number>
    this.car = new Map();
  }
  // 向购物车中添加商品
  add(goods,num){
    this.car.set(goods,num);
  }
  // 从购物车中移除商品
  remove(goods){
    this.car.delete(goods);
  }
  // 购物车中改变商品数量
  edit(goods, num){
    this.car.set(goods,num);
  }
  // 清空购物车
  clear(){
    this.car.clear();
  }
  // 结算
  sum(){
    let money = 0;
        for (let i of this.car)
    {
       money+=i[0].price*i[1];
    } 
    return money;
  }
}
// 为用户分为一个购物车
let shopCar = new Shopcar();
// 用户购买商品
shopCar.add(fbm,2);
shopCar.add(kqs,2);
shopCar.edit(fbm,3);
console.log(shopCar.car);

// 用户修改商品数量
// shopCar.edit();
console.log(shopCar.sum());

关于遍历map结构:for-of遍历:
        ①for(let item of map){
                                //item是map中的键值对
         }
     遍历结果是数组
        ②for(let item of map.values()){

         }
     遍历属性值
        ③for(let item of map.keys()){

         }

此外还可采用forEach遍历。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值