简体   繁体   中英

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

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.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM