Написание универсального простого кода сравнения Switch js
я новичок в JavaScript, вопрос на засыпку, помогите красиво переписать , структурировать код.
у меня есть масив обьектов,
var array = [
{id:1,
Укрепление дверей: "Не укреплены"
Укрепление окон: "Не все укреплены"
Укрепление стен/крыши: "Укреплены"}
];
я итерирую масив, на каждой итерацию выполняю функцию колбэк, для каждого элемента масива,
//block --текущий обьект с которым я работаю
//у меня есть блок кода который выполнится если в свойствах обьекта,есть значения
//"Не укреплены" или "Не все укреплены"
//суть вопроса в выражении, хочу сделать его универсальным ,но моих знаний не достаточно
angular.forEach(array, function (block) {
switch(block['Укрепление дверей']){
case "Не укреплены":
case "Не все укреплены":
console.log('блок кода');
break;
}
if(block['Укрепление окон'] === "Не укреплены")
console.log('блок кода');
if(block['Укрепление стен/крыши'] === "Не укреплены")
console.log('блок кода');
})
блок кода один и тот же, свойства обьекта разные ,я не знаю как написать универсальное выражение для проверки чтоб не дублировать код console.log('блок кода');
думал написать как то так ,
switch(block[имя свойства обьекта]){
//проверяю если хоть 1 значение свойства === case:
//выполняю код console.log('блок кода');
case "Не укреплены":
case "Не все укреплены":
console.log('блок кода');
break;
}
спасибо за любые советы ! Задумка на универсальность, обьтектов в масиве может быть несколько.
Ответы (1 шт):
Автор решения: Laukhin Andrey
→ Ссылка
Если хотите универсальный вариант, то предлагаю ввести массив "стоп-слов", тогда решение получается очень простым:
var array = [{
id: 1,
"Укрепление дверей": "Не укреплены",
"Укрепление окон": "Не все укреплены",
"Укрепление стен/крыши": "Укреплены"
}];
let targetWords = ["Не укреплены", "Не все укреплены"];
array.forEach((obj) => {
for (let key in obj) {
if (targetWords.indexOf(obj[key]) != -1)
console.log(key);
}
});