Как сравнить значения свойств обьекта с конкретной переменной?
И снова доброго времени суток и у меня очередной вопрос. Итак, есть у меня обьект:
const NO = 0,
YES = 1;
let rooms = {
bedroom: NO,
troneroom: NO,
armory: NO,
treasury: NO,
dungeon: NO,
library: NO,
labratory: NO,
},
есть некая переменная:
let room_yes = YES
и теперь, вопрос: как сравнить все свойства обьекта с данной переменной и если значение какого-то из свойств соответствует значению переменной, то вернуть, например, ключ этого свойства? Может есть какой-то цикл для обьектов или что-то в таком духе?
Я пробовал искать информацию в гугле, но там по большей части речь идет о сравнении обьекта с обьектом и нет ни слова о том, как его содержимое можно сравнить с каким-то конкретным значением... (Не исключаю, что не смог найти нужного ответа из-за того, что неправильно задавал вопрос, но как спросить гугл об этом правильно, я хз...)
Ответы (2 шт):
const NO = 0,
YES = 1;
let rooms = {
bedroom: NO,
troneroom: NO,
armory: NO,
treasury: NO,
dungeon: YES,
library: NO,
labratory: NO,
};
let room_yes = YES;
for (const [key, value] of Object.entries(rooms)) {
if (value === room_yes)
console.log(`${key}`);
}
Ссылка на доки: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/entries
Перебрать массив можно циклом for .. in напрямую обращаясь к объекту
const NO = 0,
YES = 1;
let rooms = {
bedroom: NO,
troneroom: YES,
armory: NO,
treasury: NO,
dungeon: NO,
library: YES,
labratory: NO,
}
let room_yes = YES;
for (let key in rooms) {
if (rooms[key] === room_yes) {
console.log(key);
}
}
В дополнение к ответу Алексея - можно использовать стандартный метод перебора массивов .forEach
Object.entries(rooms).forEach(([key, value]) => {
if (value === room_yes) {
console.log(key)
}
})