Javascript 用于高效检索的类Typescript映射数据结构
定义数据结构的有效方法是什么,以满足下面的示例 MealType和Topping不太可能改变,但将来可能会改变 正在寻找一种声明性的、功能性的方法来构建此数据结构,并在Javascript 用于高效检索的类Typescript映射数据结构,javascript,typescript,ecmascript-6,functional-programming,declarative,Javascript,Typescript,Ecmascript 6,Functional Programming,Declarative,定义数据结构的有效方法是什么,以满足下面的示例 MealType和Topping不太可能改变,但将来可能会改变 正在寻找一种声明性的、功能性的方法来构建此数据结构,并在映射中进行检索。检索(selectedMealType,selectedToppingMix)-flavor //只能选择一种膳食类型 导出枚举度量类型{ 沙拉 披萨 油酥面团 } //可以选择无、一个或多个(任意组合的)浇头 导出枚举顶置{ 奶酪, 火腿, 西红柿 } //预期产量 //所有可能的组合 //色拉 //:没有浇头
映射中进行检索。检索(selectedMealType,selectedToppingMix)
-flavor
//只能选择一种膳食类型
导出枚举度量类型{
沙拉
披萨
油酥面团
}
//可以选择无、一个或多个(任意组合的)浇头
导出枚举顶置{
奶酪,
火腿,
西红柿
}
//预期产量
//所有可能的组合
//色拉
//:没有浇头
//:使用Cheese-->并为其指定特定的字符串/值
//:使用Cheese、Ham-->并为其指定特定字符串/值
//:使用Cheese,番茄-->并为其指定特定的字符串/值
//:搭配奶酪、火腿、西红柿-->并为其指定特定字符串/值
//:使用Ham-->并为其指定特定字符串/值
//:使用Ham,并为其指定特定的字符串/值
//:使用Ham,并为其指定特定的字符串/值
// ... 比萨饼和糕点也一样
让它保持静止就可以了
您将如何构建它,然后访问这些值 考虑到您的密钥空间非常有限,我怀疑它是否真的需要超级高效。但是,为了有效的检索,考虑键-由字符串包含膳食和排序列表的配料。也就是说,您希望它具有多大的“功能”,您是否需要不变性?真正的浇头集作为键?以上只是一个抽象,但你是对的,键空间并不大。有5种“膳食类型”和7种“主题”。这很有趣,因为我所研究的与食物无关,但我认为这比一些模糊的特定领域知识/术语更容易掌握。不变性将是理想的。对于7个“toppings”,您可能希望将它们表示为一个位字段,例如,其中每个枚举是2的幂,一个集合由它们的和唯一表示。啊,好的,5*2^7是中等大小的,不再是小的。如果您想要一个不可变的实现,最好从提供不可变数据结构的众多库中选择一个——不要自己实现。但是请注意以下问题:“如何使用标准库实现此功能?”、“如何快速、小而脏?”、“选择哪个库?”以及“如何为此实现我自己的数据结构?”只有前两个是关于StackOverflow的主题。