У меня есть код. Большой, с вложенными циклами. Подскажите, как его можно сделать нормальным? Не думаю, что такое полотно - это нормально... Хотя бы куда копать
selectDoctor(doctorId) {
for ( let counterClinic = 0; counterClinic < this.complexClinic.length; counterClinic++ ) {
if ( this.complexClinic[counterClinic].id == this.doctorsListShow[0].clinicId ) {
if ( this.doctorsListShow[0].complex == 'specialization' ) {
let specializationsFor = this.complexClinic[counterClinic].specializations
for ( let counterSpecialization = 0; counterSpecialization < specializationsFor.length; counterSpecialization++ ) {
if ( specializationsFor[counterSpecialization].id == this.doctorsListShow[0].specializationId ) {
let doctorsFor = specializationsFor[counterSpecialization].doctors
for ( let counterDoctor = 0; counterDoctor < doctorsFor.length; counterDoctor++ ) {
doctorsFor[counterDoctor].select = false
specializationsFor[counterSpecialization].cost = 0
if ( doctorsFor[counterDoctor].id == doctorId ) {
doctorsFor[counterDoctor].select = true
specializationsFor[counterSpecialization].select = true
specializationsFor[counterSpecialization].cost = doctorsFor[counterDoctor].cost
break
}
}
}
}
}
if ( this.doctorsListShow[0].complex == 'instrumental' ) {
let instrumentalsFor = this.complexClinic[counterClinic].instrumentals
for ( let counterSpecialization = 0; counterSpecialization < instrumentalsFor.length; counterSpecialization++ ) {
if ( instrumentalsFor[counterSpecialization].id == this.doctorsListShow[0].specializationId ) {
let doctorsFor = instrumentalsFor[counterSpecialization].doctors
for ( let counterDoctor = 0; counterDoctor < doctorsFor.length; counterDoctor++ ) {
doctorsFor[counterDoctor].select = false
instrumentalsFor[counterSpecialization].cost = 0
if ( doctorsFor[counterDoctor].id == doctorId ) {
doctorsFor[counterDoctor].select = true
instrumentalsFor[counterSpecialization].select = true
instrumentalsFor[counterSpecialization].cost = doctorsFor[counterDoctor].cost
break
}
}
}
}
}
break
}
}
console.log(this.complexClinic)
this.doctorsListShow = []
},
Предлагаю такую архитектуру. Я не всё здесь сделал правильно, но суть, я думаю, показал
// объявляем класс используемой сущности
class Clinic {
// в ней определяем методы по поиску этих сущностей
static getById(id) {
return clinics.filter(clinic => clinic.id === id)[0];
}
static getByName(name) {
return clinics.filter(clinic => clinic.name === name)[0];
}
constructor(id, name) {
// свойства клиники
this.id = id;
this.name = name;
}
}
// список клиник
const clinics = [];
// заполняем
clinics.push(new Clinic(1, 'Central #1'), new Clinic(2, 'Central #2'));
// ищем...
const clinic = Clinic.getById(id);
// В том же дуже остальные сущности
У меня есть скрипт выбора цвета, который задает цвет нужного элемента:
Вопрос касается JS + SVGДолго думал сюда написать, но уже несколько дней не могу найти решение, прошу помочь разобраться
Подвесил на кнопку Next слайдера Slick свой обработчик события ClickОн срабатывает один раз, а потом перестает
Создаю игру на node jsВ качестве соединения использую socket io