typescript - Javascript Map-objekt med flere nøkler til én verdi
Er det mulig å ha flere nøkler som gir samme resultat i en JS Map, uten å måtte skrive alle sammen?
For eksempel:
const mp = new Map<number, string>([
[2 || 4, 'even'],
[1 || 3, 'odd']
]);
Dette fungerer ikke, men jeg leter etter noe lignende for å unngå en switch-sak som er veldig omstendelig
Svar #1
Du kan skrive din egen hjelper for å omforme en mindre detaljert input til den som new Map() forventer:
const mapReducer = (arr, [keys, val]) => [
...arr,
...(Array.isArray(keys)
? [...keys.map(key => [key, val])]
: [[keys, val]]
)
];
const mp = new Map([
[[2, 4], 'even'],
[[1, 3], 'odd'],
[0, 'meh...']
].reduce(mapReducer, []));
console.log([...mp.entries()])Svar #2
Er det mulig å ha flere nøkler som gir samme resultat i en JS Map, uten å måtte skrive alle sammen?
Nei. Et kart er en 1:1-forbindelse mellom en nøkkel og en verdi. Hvis du vil at to forskjellige nøkler skal ha samme verdi, betyr det at du må opprette to oppføringer i kartet.
