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.

Relaterte artikler