es6 new Map()映射 及ts中的枚举

本文探讨了在解决罗马数字计算问题时如何使用ES6的Map对象进行字符串到数字的映射,详细介绍了Map对象的方法,如clear、delete、forEach等,并提及在TypeScript(TS)中枚举的使用,为开发提供优化方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在力扣遇到一到题,是罗马数字计算其中实现的过程中有一部分需要字符串到数字的映射。我的第一想法是通过switch进行实现

switch(item){
            case 'I' :
               value = 1
               break;
            case 'V' :
               value = 5
               break
            case 'X' :
               value = 10;
               break;
            case 'L' :
               value = 50;
               break;
            case 'C' :
               value = 100;
               break;
            case 'D' :
               value = 500;
               break;
            case 'M' :
               value = 1000
               break;
        }

虽然也实现了,但是后来看到题解的时候就觉得很憨。这不就是映射嘛,完全没想到,所以在这里整理一下。

Map对象自带方法

  • clear 从映射中移除所有元素
  • delete 从映射中移除指定元素
  • forEach 对映射中的每个元素执行指定操作
  • get 返回映射中指定的元素
  • has 如果映射包含指定元素,则返回true
  • set 添加一个新建元素到映射
  • toString 返回映射字符串形式
  • valueOf 返回指定对象的原始值

使用方法

var m = new Map([1'red'])
m.set(2,'balck')
m.set(3,()=>{console.log('我是3')}
m.set('键1',{value:'值1'})
console.log(m.get(1)//red
console.log(m.size)//4
console.loh(m.has('键1'))// true

优化

//1.
const symbolValues = new Map();
    symbolValues.set('I', 1);
    symbolValues.set('V', 5);
    symbolValues.set('X', 10);
    symbolValues.set('L', 50);
    symbolValues.set('C', 100);
    symbolValues.set('D', 500);
    symbolValues.set('M', 1000);  
//2.使用字面量
let symbolValues = {
   "I":1,
   "v":2
}

ts中的枚举

//Up的值为 0, Down的值为 1等等。从0开始自增长
enum Direction {
    Up,
    Down,
    Left,
    Right
}
//当然你也可以指定值
enum Direction {
    Up = 1,
    Down,
    Left,
    Right
}
//或许使用字符串枚举
enum Direction {
    Up = "UP",
    Down = "DOWN",
    Left = "LEFT",
    Right = "RIGHT",
}
console.log(Up)//"Up"
//异构
enum Direction {
    Up = "UP",
    Down = 2
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值