値のオブジェクトからキーを取得します。

Dharmeshシン:

私は、オブジェクトの値からキーを取得しようとしています。私は、次の配列を持っています:

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

そして、私は1つのオブジェクトがあります。

{
    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
    }
}

値がテスト91であれば、どのように私はD123_EMGとして鍵を得ることができますか?

私はこれを試してみましたが、適切な応答を取得していません

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

私は2つのループやワンライナーのアプローチを使用するのでまた、それを最適化することができますか?

YanickBélanger:

あなたは使用することができfilter()、このように:

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"];

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=30741&siteId=1