javascriptdictionary

How can I get a key in a JavaScript 'Map' by its value?


I have a JavaScript 'Map' like this one

let people = new Map();
people.set('1', 'jhon');
people.set('2', 'jasmein');
people.set('3', 'abdo');

I want some method to return a key by its value.

let jhonKey = people.getKey('jhon'); // jhonKey should be '1'

Solution

  • You could convert it to an array of entries (using [...people.entries()]) and search for it within that array.

    let people = new Map();
    people.set('1', 'jhon');
    people.set('2', 'jasmein');
    people.set('3', 'abdo');
        
    let jhonKeys = [...people.entries()]
            .filter(({ 1: v }) => v === 'jhon')
            .map(([k]) => k);
    
    console.log(jhonKeys); // if empty, no key found otherwise all found keys.