Get key from object of value

dharmesh singh :

I am trying to get the key from the value of the Object. I have the following array:

["Test 91", "Test 92", "Demo 1", "Demo 2"]

And I have one object:

{
    D123_EMG: {
        value: "Test 91", 
        isArchived: true
    }
    D21: {
        value: "Test 92", 
        isArchived: false
    }
    Z6200_EMO: {
        value: "Demo 1", 
        isArchived: true
    }
    G211_GTH: {
        value: "Demo 2", 
        isArchived: false
    }
}

So how can I get key as D123_EMG if the value is Test 91?

I tried this, but not getting proper response

    var data = Object.keys(objectData);
    var keys = []
    for(var i = 0; i < array.length; i++){
        for(var j = 0; j < data.length; j++){
            if(array[i] === objectData[data[j].value) {
                keys.push(objectData[data[j])
            }
        }
    }

Also, can it be optimized since I used two loops or one-liner approach?

Yanick Bélanger :

You can use filter() in this way:

const values = ["Test 91", "Test 92", "Demo 1", "Demo 2"];

const data = {
    D123_EMG: {
        value: "Test 91", 
        isArchived: true
    },
    D21: {
        value: "Test 92", 
        isArchived: false
    },
    Z6200_EMO: {
        value: "Demo 1", 
        isArchived: true
    },
    G211_GTH: {
        value: "Demo 2", 
        isArchived: false
    }
}

const keysFound = Object.keys(data).filter(key => values.includes(data[key].value));

console.log(keysFound); // ["D123_EMG", "D21", "Z6200_EMO", "G211_GTH"];

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=29874&siteId=1