首页 > 解决方案 > 有条件地比较数组的值并将其设置为变量

问题描述

所以我试图flag根据传递dishes的对象数组的值为变量设置一个标志表情符号。
我有一个解决方案,但我敢打赌这可以改进。我的意思是想象一下50个国家......

let flag = ''
const countryFlags = ['', '', '', '']
const dishes = [
   { dish: 'pizza', origin: 'italian' },
   { dish: 'tzatziki', origin: 'greek' }
]

const chooseFlag = a => {
    if (a === 'german') flag = countryFlags[0]
    if (a === 'greek') flag = countryFlags[1]
    if (a === 'spanish') flag = countryFlags[2]
    if (a === 'italian') flag = countryFlags[3]
}

chooseFlag(dishes.origin)

有人有速记解决方案吗?

标签: javascriptarraysif-statementecmascript-6

解决方案


您可以创建一个map键值对(key作为国家和value作为代码):

let flag = ''
const countryToFlags = {
  'german':'', 
  'greek':'', 
  'spanish':'',
  'italian':''
}
const dishes = [
   { dish: 'pizza', origin: 'italian' },
   { dish: 'tzatziki', origin: 'greek' }
]

const chooseFlag = a => {
    flag = countryToFlags[a];
}

chooseFlag(dishes[0].origin);

console.log(flag);


推荐阅读