我有一个枚举,我在其中存储了一些如下所示的UI元素值:
const uiElementAttributes = {
1: {
id: 1,
color: 'red',
icon: 'icon-something.png'
},
2: {
id: 2,
color: 'yellow',
icon: 'icon-something-else.png'
},
3: {
id: 3,
color: 'blue',
icon: 'icon-this-item.png'
},
99: {
id: 99,
color: 'black',
icon: 'icon-black.png'
}
};
我有一个函数,它将根据传递给我的函数的id从枚举中返回正确的对象。我的问题是如何检查枚举中是否定义了值?
这里的功能是:
const getAttributes (id) => {
// How do I check to see if the id is in the enum?
if(checkIfIdIsInEnum) {
return uiElementAttributes[id];
} else {
return uiElementAttributes[99];
}
};
更新:我正在尝试建议的答案。它确实看起来非常简单,但看起来当webpack将我的代码转换为vanilla JS时,它会在default
enum
的末尾添加undefined
。知道可能导致这种情况的原因 - 见下文?正如您所看到的,我传递的id
值为1
,因此它应该能够在我的枚举对象中找到值1.
更新2: 我通过在花括号中导入枚举来解决了这个问题 - 见下文:
import {calendarEvents} from '../../enums/calendarEvents';
答案 0 :(得分:1)
在这种特殊情况下,您可以访问该属性,如果结果为false,则采用默认属性99
。
const getAttributes = id => uiElementAttributes[id] || uiElementAttributes[99];
否则,您可以使用in
operator或建议的Object#hasOwnProperty
。