网上无意看到一篇文章觉得不错,但不能转载,便是关于标题描述的。通过map数据结构来替换if else,显得更加简洁明了。
对于Map数据结构来做个简单介绍:
定义:
Map对象是一组键/值对的集合,键值可以是任何值。
语法:
new Map([iterable])Iterable 是一个数组(2元数组)或者其他可迭代的且其元素是键值对的对象。每个键值对会被加到新的 WeakMap 里。null 会被当做 undefined。
属性:
Map.length 为0;Map.prototype.constructor 返回创建Map实例的原型函数。 Map函数是默认的。
方法:
[Map.prototype.delete(key)]
移除key的关联对象。执行后 Map.prototype.has(key)返回false。
[Map.prototype.get(key)]
返回key关联对象, 或者 undefined(没有key关联对象时)。
[Map.prototype.has(key)]
根据是否有key关联对象返回一个Boolean值。
[Map.prototype.set(key, value)]
在Map中设置一组key关联对象,返回这个Map对象。
实例:
var status = 8;
// 常用的if else 进行 条件判断来do somethings
if(status == 1){
console.log(111111)
}else if(status == 2){
console.log(222222)
}else if(status == 3){
console.log(333333)
}else{
console.log(status)
} // 8
// switch case的写法 相比if else 是有一些优化了!
switch (status){
case 1:
console.log(status)
break
case 2:
console.log(status)
break
case 3:
console.log(status)
default:
console.log(status)
break;
} // 8
// 对象object 数据结构的写法 简洁了
var obj = {
"1":"11111",
"2":"22222",
"3":"33333"
}
console.log(obj[status] || status) // 8
// Map数据结构的写法 和object差不多
var mMap = new Map([
["1","11111"],
["2","22222"],
["3","33333"]
])
console.log(mMap.get(status) || status) // 8
网友评论