在javascript中将int转换为枚举

agg*_*ton 4 javascript

你如何在javascript中有效地将int转换为枚举?

说我有这个枚举

enuTable = // Table enum
{
    enuUnknown: 0,
    enuPerson: 1,
    enuItem: 2,
    enuSalary: 3,
    enuTax: 4,
    enuZip: 5,
    enuAddress: 6,
    enuLocation: 7,
    enuTasks: 8,

};
Run Code Online (Sandbox Code Playgroud)

在部分代码中,我从AJAX调用中获取一个返回值,该调用是与上述表之一相对应的数字.

我可以编写一个转换值的开关,但是有一种更有效(简洁)的方式将int转换为枚举吗?一个原因是,我不想经常更改开关,以防我更改枚举.我想我可以使用带有枚举名称的数组并构造一个标识符来索引枚举,但是,每次枚举更改时我都需要更改数组.我想我正在寻找的是一种透明的方法,它不需要事先知道枚举.

Yur*_*nko 8

像这样

var keys = Object.keys(enuTable).sort(function(a, b){
    return enuTable[a] - enuTable[b];
}); //sorting is required since the order of keys is not guaranteed.

var getEnum = function(ordinal) {
    return keys[ordinal];
}
Run Code Online (Sandbox Code Playgroud)

UPD:您可以使用某些序数值

var keys = Object.keys(enuTable).reduce(function(acc, key) {
    return acc[enuTable[key]] = key, acc;
}, {});
Run Code Online (Sandbox Code Playgroud)