網(wǎng)上無意看到一篇文章覺得不錯(cuò),但不能轉(zhuǎn)載症副,便是關(guān)于標(biāo)題描述的店雅。通過map數(shù)據(jù)結(jié)構(gòu)來替換if else,顯得更加簡(jiǎn)潔明了贞铣。
對(duì)于Map數(shù)據(jù)結(jié)構(gòu)來做個(gè)簡(jiǎn)單介紹:
定義:
Map對(duì)象是一組鍵/值對(duì)的集合闹啦,鍵值可以是任何值。
語法:
new Map([iterable])Iterable 是一個(gè)數(shù)組(2元數(shù)組)或者其他可迭代的且其元素是鍵值對(duì)的對(duì)象辕坝。每個(gè)鍵值對(duì)會(huì)被加到新的 WeakMap 里亥揖。null 會(huì)被當(dāng)做 undefined。
屬性:
Map.length 為0圣勒;Map.prototype.constructor 返回創(chuàng)建Map實(shí)例的原型函數(shù)费变。 Map函數(shù)是默認(rèn)的。
方法:
[Map.prototype.delete(key)]
移除key的關(guān)聯(lián)對(duì)象圣贸。執(zhí)行后 Map.prototype.has(key)返回false挚歧。
[Map.prototype.get(key)]
返回key關(guān)聯(lián)對(duì)象, 或者 undefined(沒有key關(guān)聯(lián)對(duì)象時(shí))。
[Map.prototype.has(key)]
根據(jù)是否有key關(guān)聯(lián)對(duì)象返回一個(gè)Boolean值吁峻。
[Map.prototype.set(key, value)]
在Map中設(shè)置一組key關(guān)聯(lián)對(duì)象滑负,返回這個(gè)Map對(duì)象在张。
實(shí)例:
var status = 8;
// 常用的if else 進(jìn)行 條件判斷來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 是有一些優(yōu)化了!
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
// 對(duì)象object 數(shù)據(jù)結(jié)構(gòu)的寫法 簡(jiǎn)潔了
var obj = {
"1":"11111",
"2":"22222",
"3":"33333"
}
console.log(obj[status] || status) // 8
// Map數(shù)據(jù)結(jié)構(gòu)的寫法 和object差不多
var mMap = new Map([
["1","11111"],
["2","22222"],
["3","33333"]
])
console.log(mMap.get(status) || status) // 8