Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于高效检索的类Typescript映射数据结构_Javascript_Typescript_Ecmascript 6_Functional Programming_Declarative - Fatal编程技术网

Javascript 用于高效检索的类Typescript映射数据结构

Javascript 用于高效检索的类Typescript映射数据结构,javascript,typescript,ecmascript-6,functional-programming,declarative,Javascript,Typescript,Ecmascript 6,Functional Programming,Declarative,定义数据结构的有效方法是什么,以满足下面的示例 MealType和Topping不太可能改变,但将来可能会改变 正在寻找一种声明性的、功能性的方法来构建此数据结构,并在映射中进行检索。检索(selectedMealType,selectedToppingMix)-flavor //只能选择一种膳食类型 导出枚举度量类型{ 沙拉 披萨 油酥面团 } //可以选择无、一个或多个(任意组合的)浇头 导出枚举顶置{ 奶酪, 火腿, 西红柿 } //预期产量 //所有可能的组合 //色拉 //:没有浇头

定义数据结构的有效方法是什么,以满足下面的示例

MealType和Topping不太可能改变,但将来可能会改变

正在寻找一种声明性的、功能性的方法来构建此数据结构,并在
映射中进行检索。检索(selectedMealType,selectedToppingMix)
-flavor

//只能选择一种膳食类型
导出枚举度量类型{
沙拉
披萨
油酥面团
}
//可以选择无、一个或多个(任意组合的)浇头
导出枚举顶置{
奶酪,
火腿,
西红柿
}
//预期产量
//所有可能的组合
//色拉
//:没有浇头
//:使用Cheese-->并为其指定特定的字符串/值
//:使用Cheese、Ham-->并为其指定特定字符串/值
//:使用Cheese,番茄-->并为其指定特定的字符串/值
//:搭配奶酪、火腿、西红柿-->并为其指定特定字符串/值
//:使用Ham-->并为其指定特定字符串/值
//:使用Ham,并为其指定特定的字符串/值
//:使用Ham,并为其指定特定的字符串/值
// ... 比萨饼和糕点也一样
让它保持静止就可以了


您将如何构建它,然后访问这些值

考虑到您的密钥空间非常有限,我怀疑它是否真的需要超级高效。但是,为了有效的检索,考虑键-由字符串包含膳食和排序列表的配料。也就是说,您希望它具有多大的“功能”,您是否需要不变性?真正的浇头集作为键?以上只是一个抽象,但你是对的,键空间并不大。有5种“膳食类型”和7种“主题”。这很有趣,因为我所研究的与食物无关,但我认为这比一些模糊的特定领域知识/术语更容易掌握。不变性将是理想的。对于7个“toppings”,您可能希望将它们表示为一个位字段,例如,其中每个枚举是2的幂,一个集合由它们的和唯一表示。啊,好的,5*2^7是中等大小的,不再是小的。如果您想要一个不可变的实现,最好从提供不可变数据结构的众多库中选择一个——不要自己实现。但是请注意以下问题:“如何使用标准库实现此功能?”、“如何快速、小而脏?”、“选择哪个库?”以及“如何为此实现我自己的数据结构?”只有前两个是关于StackOverflow的主题。