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