从Typescript中的PARTIAL字符串中查找枚举值

时间:2019-09-27 18:42:22

标签: typescript

我有一个输入,用户可以在其中输入搜索条件,然后在旁边输入一个下拉菜单,以选择用户要搜索的字段。对于字符串值,效果很好,但其中一个字段被定义为枚举,用户可以选择只输入部分搜索值。

例如,考虑:

enum DaysOfWeek {
   Monday,
   Tuesday,
   Wednesday,
   Thursday,
   Friday
}

用户可以只写“ Mon”,然后找到该特定字段上所有值为DaysOfWeek.Monday的项目。

这怎么实现?

谢谢。

1 个答案:

答案 0 :(得分:0)

我认为您最好的选择是创建一个映射集合。

enum DaysOfWeek {
   Monday,
   Tuesday,
   Wednesday,
   Thursday,
   Friday
}

const dayMappings = [
  { text: 'monday', key: DaysOfWeek.Monday },
  { text: 'tuesday', key: DaysOfWeek.Tuesday },
  { text: 'wednesday', key: DaysOfWeek.Wednesday },
  { text: 'thursday', key: DaysOfWeek.Thursday },
  { text: 'friday', key: DaysOfWeek.Friday }
]

const getDayEnumFromUserInput = (text: string) => {
  return dayMappings.find(m => m.text.startsWith(text.toLowerCase()));
};

您还可以在indexOf() >= 0谓词中使用startsWith()代替find()。不幸的是,IE不支持startsWith()