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