Auloma
Auloma

Reputation: 153

Javascript Map Object with multiple keys to one value

Is it possible to have multiple keys giving the same result in a JS Map, without having to write all of them ?

For example:

const mp = new Map<number, string>([
      [2 || 4, 'even'],
      [1 || 3, 'odd']
    ]);

This does not work but I am looking for something similar to avoid a switch case which is very verbose

Upvotes: 3

Views: 10625

Answers (2)

tao
tao

Reputation: 90038

You can write your own helper to transform a less verbose input into the one which new Map() expects:

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()])

Upvotes: 4

VLAZ
VLAZ

Reputation: 28977

Is it possible to have multiple keys giving the same result in a JS Map, without having to write all of them ?

No. A map is a 1:1 connection between a key and a value. If you want two different keys to have the same value, that means you need to create two entries in the map.

Upvotes: 1

Related Questions