将javascript枚举键字符串转换为值

时间:2016-09-17 20:46:32

标签: javascript

在JavaScript代码中,我定义了以下枚举:

MyMessageIds = {
    UndefinedId : 0,
    FilenameId : 1,
    BuildFileId : 2,
    MovementArgsId : 3,
    MoveId : 4,
    ExecuteCommandId : 5
}

在JavaScript函数中,我希望能够提供枚举键的字符串表示形式(即“MoveId”)并返回其整数值4.那我怎么能这样做呢?

2 个答案:

答案 0 :(得分:9)

只需使用括号表示法:

var MyMessageIds = {
    UndefinedId : 0,
    FilenameId : 1,
    BuildFileId : 2,
    MovementArgsId : 3,
    MoveId : 4,
    ExecuteCommandId : 5
};

function getValue(key) {
    return MyMessageIds[key];
}

答案 1 :(得分:0)

您可以创建一些实用程序方法,这些方法使用一个对象(枚举)来计算如何获取键/值。



height = 40vh;




您还可以创建自己的类对象来表示具有可重用方法的枚举。



var MyMessageIds = {
    UndefinedId : 0,
    FilenameId : 1,
    BuildFileId : 2,
    MovementArgsId : 3,
    MoveId : 4,
    ExecuteCommandId : 5
}

function getEnumKeys(enumType) {
  return Object.keys(MyMessageIds);
}

function getEnumValues(enumType) {
  return getEnumKeys(enumType).map(function(key) {
    return enumType[key];
  });
}

function getEnumValue(enumType, key) {
  return enumType[getEnumKeys(enumType).filter(function(k) {
    return key === k;
  }).pop() || ''];
}

document.body.innerHTML = '<pre>' + JSON.stringify({
  'Enum Keys' : getEnumKeys(MyMessageIds),
  'Enum Vals' : getEnumValues(MyMessageIds),
  'Example' : {
    'MoveId' : getEnumValue(MyMessageIds, 'MoveId')
  }
}, null, 4) + '</pre>';
&#13;
&#13;
&#13;