当前位置: 首页 > 知识库问答 >
问题:

使用字符串枚举时,“in”检查返回false

莘聪
2023-03-14
enum Colors {
    Red = "RED",
    Green = "GREEN",
    Blue = "BLUE",
    Other = 1
}

注意:此枚举仅用于演示。我实际上并没有混合数字和字符串,但这比编写两个枚举来显示错误要容易得多。

现在,在我的代码中,我希望检查枚举中是否有特定的值,但是,当检查字符串enums时,它总是为false

'RED' in Colors // false
"RED" in Colors // false
'GREEN' in Colors // false
"GREEN" in Colors // false
1 in Colors // true

我检查了编译后的代码,这就是它的样子

var Colors;
(function (Colors) {
    Colors["Red"] = "RED";
    Colors["Green"] = "GREEN";
    Colors["Blue"] = "BLUE";
    Colors[Colors["Other"] = 1] = "Other";
})(Colors || (Colors = {}));

共有1个答案

赖渊
2023-03-14

您是按属性值进行访问,但是运算符中的被用来按属性名进行访问。

您的数据如下所示:

js prettyprint-override">var Colors = {
  Red: "RED"
}

因此,您可以测试键red是否在Colors:'red'在Colors//true

var Colors = {
  Red: "RED"
}

function valueInColors(needed) {
  for(let k in Colors) {
    if(Colors.hasOwnProperty(k) && Colors[k] === needed) {
      return true;
    }
  }
  
  return false;
}

console.log(valueInColors('RED'))

 类似资料:
  • 本文向大家介绍C#枚举到字符串并返回,包括了C#枚举到字符串并返回的使用技巧和注意事项,需要的朋友参考一下 示例            

  • “String”类型的参数不能分配给“Types”类型的参数。

  • 我的模式如下 我正在尝试编写一个方法来检查代码并返回相应的枚举。 event.getStatusCode的有效值是:A,T,U。现在我需要检查这些代码并根据代码返回枚举。我尝试了上面的方法,但它给我代码=["A"]的错误。下面是错误状态。 我该怎么解决这个问题?我是java新手。非常感谢您的帮助,谢谢

  • 我用一些字符串作为属性的常量创建了一个枚举。每个常数中字符串的数量都不一样,所以我使用了varargs(第一次这样做)。这是我的枚举: 现在我想要能够键入类似的内容:

  • 我有一个类似这样的字符串枚举: 我有一个包含一些字符串的列表。 我想迭代someStringList并为它找到相应的枚举。 例如:列表包含字符串“一些值”和“一些第三个值”,然后我想使用JavaStream-API返回一个包含SomeEnum.STRING1和SomeEnum.STRING3的列表 不知何故,我无法让它工作。我尝试了这样的事情: 但这不会编译,因为它不会返回任何内容。有什么想法吗?

  • 问题内容: 这是我的问题-我正在寻找(如果存在的话)等效于的枚举。 这是我的代码问题的一个示例: 现在,我意识到,使用of 是最好的方法,但是我必须通过其他地方的开关/案例来运行我的枚举内容。因此,我的问题。 假设这样的事情不存在,我该怎么做呢? 问题答案: 应该这样做: 这样,您不必担心以后再添加其他枚举值,它们都已选中。 编辑: 如果枚举很大,则可以将值粘贴在HashSet中: 然后,您可以做