如何在JavaScript/TypeScript中使用非唯一键创建Map?

Tec*_*t10 0 javascript arrays dictionary typescript angular

为了与现有代码交互,我希望在JavaScript/TypeScript中实现具有非唯一键的Map(对于Angular中的Web应用程序).

我知道JavaScript/TypeScript中的Maps强制使用唯一键.如何实现"非唯一"地图?

创建Key-Value对象数组不起作用,因为该结构不会从现有使用者代码的正确形状中反序列化JSON.

例如,我希望创建类似以下结构的东西:

vehicleOptions : NonUniqueMap<key: string, value: {color: string, isTowingCapable: boolean}>
{
  "Truck", { "Red", true },
  "Compact Sedan", { "Black", false },
  "Compact Sedan", { "Blue", false }
}
Run Code Online (Sandbox Code Playgroud)

Alo*_*iel 6

你不能.

您可以创建一个独特的地图.当您有两个相同的键时,可以将其存储为:

const map = {
    "Truck": [{ "Red": true }],
    "Compact Sedan": [{ "Black": false }, { "Blue": false }]
}
Run Code Online (Sandbox Code Playgroud)

然后,当你得到值时Compact Sedan,你得到一个数组.

所以你可以获得第一个/第二个值:

map["Compact Sedan"][0]; // { "Black": false }
map["Compact Sedan"][1]; // { "Blue": false }
Run Code Online (Sandbox Code Playgroud)