typescript - Javascript Map Nesnesi ile birden fazla anahtar tek bir değere


JS Map'te aynı sonucu veren birden fazla anahtara sahip olmak, hepsini yazmak zorunda kalmadan mümkün mü?

Örneğin:

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

Bu işe yaramıyor ama çok ayrıntılı olan bir switch case'den kaçınmak için benzer bir şey arıyorum

Cevap #1

Kendi yardımcınızı yazarak daha az ayrıntılı bir girişi new Map()'in beklediği biçime dönüştürebilirsiniz:

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

Cevap #2

Bir JS Map'te, hepsini yazmak zorunda kalmadan aynı sonucu veren birden fazla anahtar olabilir mi?

Hayır. Bir harita, bir anahtar ile bir değer arasında 1:1 bağlantıdır. Eğer iki farklı anahtarın aynı değere sahip olmasını istiyorsanız, bu haritada iki giriş oluşturmanız gerektiği anlamına gelir.

İlgili makaleler