Задать вопрос
  • Как скрывать текущий item(li) при открытие другого item(li)?

    chokoroko
    @chokoroko Автор вопроса
    0xD34F подскажите пожалуйста по поводу вашего кода:
    1. Почему вы использовали { target: t } а не event. Это одно и тоже ?
    2. Не очень понимаю данную строку n.classList.toggle('active', n.contains(parent)) а именно n.contains(parent). Обычно в метод toggle мы передаем только класс. Можно ли данное выражение n.classList.toggle('active', n.contains(parent)) записать более проще и понятнее ?
  • Как избавиться от дубликата?

    chokoroko
    @chokoroko Автор вопроса
    Сергей Соколов вот так вот ? Я не очень понимаю как передать аргументы в текст элементов.
    if (counter === 0) {
            function moreHTML(title, number1, number2, number3) {
                li.innerHTML = '<span class="title">Третий список</span>' +
                    '<ul class="extra-list">' +
                    '<li class="extra-item">9 элемент списка</li>'  +
                    '<li class="extra-item">10 элемент списка</li>' +
                    '<li class="extra-item">11 элемент списка</li>' +
                    '</ul>'
            }
        }
  • Как избавиться от дубликата?

    chokoroko
    @chokoroko Автор вопроса
    Сергей Соколов, да элементы и заголовок списка отличаются только порядковыми номерами. Я думал реализовать как-то с помощью функции но ничего не получилось
    function func(title,firstEl,secondEl,thirdEl) {
            return li.innerHTML = '<span class="title">Третий список</span>' +
                '<ul class="extra-list">' +
                '<li class="extra-item">9 элемент списка</li>'  +
                '<li class="extra-item">10 элемент списка</li>' +
                '<li class="extra-item">11 элемент списка</li>' +
                '</ul>'
        }
  • Почему тест Jest выдает ошибку(Uncaught ReferenceError: module is not defined)?

    chokoroko
    @chokoroko Автор вопроса
    Александр обновил вопрос (добавил код и фото ошибки)
  • Почему тест Jest выдает ошибку(Uncaught ReferenceError: module is not defined)?

    chokoroko
    @chokoroko Автор вопроса
    Василий Банников обновил вопрос (добавил код и фото ошибки)
  • Как передать свойство в наследуемый класс?

    chokoroko
    @chokoroko Автор вопроса
    Rise По заданию мне нужно сделать
  • Почему код выдает ошибку Uncaught TypeError?

    chokoroko
    @chokoroko Автор вопроса
    Сергей Соколов Здравствуйте у меня проблема заключается в том что не хочет применяться свойство length к массиву.

    Я уже провел несколько проверок действительно ли он является массивом.

    63d6566c8b55a388534199.png

    Все равно не могу применить выдает ошибку.

    Вот мой код на данный момент :

    class Student {
        constructor(firstName,lastName,yearOfBirth,arrayOfGrades) {
            this.firstName = firstName;
            this.lastName = lastName;
            this.yearOfBirth = yearOfBirth;
            this.arrayOfGrades = arrayOfGrades;
        }
        //______Возраст студента______//
        getAge () {
            return console.log(`${this.firstName}'s old is ${2023 - this.yearOfBirth} years`);
        }
        //______Средний бал______//
        averageMark () {
            let sum = 0;
            for (let i = 0; i < this.arrayOfGrades.length; i++) {
                sum = sum + this.arrayOfGrades[i];
            }
            return console.log(`${this.firstName}'s average mark is ${sum / this.arrayOfGrades.length}`);
        }
    
    }
    //______Экземпляры студентов______//
    const student = new Student('Dmitriy','Yaroshchuk',2001,[70,80,90,100,90,90,99,100,95,100]);
    const student1 = new Student('Andrew','Kavetsky',2000,[90,90,90,90,90,90,100,100,95,93]);
    const student2 = new Student('Diana','Koko',1999,[70,70,70,70,70,70,75,75,75,93]);
    
    //______Проверка что arrayOfGrades является массивом_____//
    // console.log(student.arrayOfGrades);
    // console.log(typeof student.arrayOfGrades);
    // console.log(Array.isArray(student.arrayOfGrades));
    // const spreadArrayOfGrades = [...(student.arrayOfGrades)];
    // const spreadArrayOfGrades1 = [...(student1.arrayOfGrades)];
    // const spreadArrayOfGrades2 = [...(student2.arrayOfGrades)];
    // console.log(spreadArrayOfGrades);
    // console.log(spreadArrayOfGrades1);
    // console.log(spreadArrayOfGrades2);
    
    //______Вызываю методы______//
    student.getAge();
    student1.getAge();
    student2.getAge();
    student.averageMark();
    student1.averageMark();
    student2.averageMark();
    
    class Visit extends Student {
        constructor() {
            super();
            this.visitinMagazine = [];
        }
        //______Используется когда студент был на занятие______//
        present () {
            if (this.visitinMagazine.length < 26) {
                this.visitinMagazine.push(true);
                return this;
            } else {
                return this.visitinMagazine.pop();
            }
        }
        //______Используется когда студент НЕ был на занятие______//
        absent () {
            if (this.visitinMagazine.length < 26) {
                this.visitinMagazine.push(false);
                return this;
            } else {
                return this.visitinMagazine.pop();
            }
        }
    }
    //______Экземпляры посейщения______//
    const visit = new Visit();
    const visit1 = new Visit();
    const visit2 = new Visit();
    
    //______Посейщение уроков______//
    visit.present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().absent().absent();
    const callOfVisitnMagazine = [...(visit.visitinMagazine)];
    // console.log(callOfVisitnMagazine);
    
    //______Посейщение уроков______//
    visit1.absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().absent().present().present();
    const callOfVisitnMagazine1 = [...(visit1.visitinMagazine)];
    // console.log(callOfVisitnMagazine1);
    
    //______Посейщение уроков______//
    visit2.present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().present().absent().absent().absent();
    const callOfVisitnMagazine2 = [...(visit2.visitinMagazine)];
    // console.log(callOfVisitnMagazine2);
    
    
     class Calculation extends Visit {
        constructor(arrayOfGrades,visitinMagazine) {
            super(arrayOfGrades,visitinMagazine);
        }
         //______Колличество занятий______//
         amountOfClasses () {
             return console.log(this.arrayOfGrades);
         }
         //______Колличество посищений______//
         amountOfVisits () {
             return console.log(this.visitinMagazine.filter((element) => element === true).length);
         }
         //______Проверяем среднюю оценку и посейщение______//
         summary () {
             const averageVisit = this.amountOfVisits / this.amountOfClasses;
             if (this.averageMark > 90 && averageVisit > 0.9) {
                 return console.log('Cool!');
             } else if (this.averageMark > 90 || averageVisit > 0.9) {
                 return console.log('Good, but it can be better!');
             } else {
                 return console.log('Radish');
             }
         }
     }
    //______Экземпляры расчетов______//
    const calculate = new Calculation([70,80,90,100,90,90,99,100,95,100],callOfVisitnMagazine);
    const calculate1 = new Calculation([90,90,90,90,90,90,100,100,95,93],callOfVisitnMagazine1);
    const calculate2 = new Calculation([70,70,70,70,70,70,75,75,75,93],callOfVisitnMagazine2);
    
    calculate.amountOfClasses();
    calculate1.amountOfClasses();
    calculate2.amountOfClasses();
    
    calculate.amountOfVisits();
    calculate1.amountOfVisits();
    calculate2.amountOfVisits();
    
    calculate.summary();
    calculate1.summary();
    calculate2.summary();
  • Почему код выдает ошибку Uncaught TypeError?

    chokoroko
    @chokoroko Автор вопроса
    VoidVolker я провел проверку массива arrayOfGrades
    63d6543d32c3f564499646.png

    Но я не могу понять почему я не могу применить length к массиву
    63d65475bfdb6398421757.png
  • Почему код выдает ошибку Uncaught TypeError?

    chokoroko
    @chokoroko Автор вопроса
    @VoidVolkerДелал проверку:
    console.log(student.arrayOfGrades) выводит массив (10) [70, 80, 90, 100, 90, 90, 99, 100, 95, 100]
    Делал проверку на тип:
    console.log(typeof student.arrayOfGrades) выводит object
    Не понимаю как такое может быть.
  • Как перебрать методы объектов в массиве?

    chokoroko
    @chokoroko Автор вопроса
    Сергей Соколов подскажите пожалуйста а что это обозначает %s %o.
  • Как перебрать методы объектов в массиве?

    chokoroko
    @chokoroko Автор вопроса
    Сергей Соколов Задание: Преподаватель создал gradeLabsфункцию, которая проверяет, работают ли студенческие лаборатории по программированию. Эта функция выполняет цикл над массивом объектов JavaScript, которые должны содержать student свойство и runLab свойство.
    Ожидается runLab, что свойство будет функцией, содержащей код студента. Вызывается runLabфункция и результат сравнивается с ожидаемым. Если результат и ожидаемый результат не совпадают, лаборатория считается неудачной.
    Функция gradeLabs работает в большинстве случаев. Но что произойдет, если учащийся неправильно назвал свою функцию? Запустите gradeLabsи передайте его studentLabs2, как описано ниже.
    После выполнения второго примера учитель получает .TypeError: lab.runLab is not a function
    Добавьте try/catchблок внутри, gradeLabsчтобы перехватить исключение, если runLab свойство не определено. Если генерируется исключение, result должно быть установлено text ."Error thrown"
  • Как корректно реализовать код?

    chokoroko
    @chokoroko Автор вопроса
    Александр могли бы пожалуйста еще раз объяснить, не очень понял ваш ответ static get SIZE_SMALL() Почему нельзя просто написать static функцию не используя get. На что в данном случае get влияет ?
  • Как корректно реализовать код?

    chokoroko
    @chokoroko Автор вопроса
    Александр подскажите пожалуйста еще несколько моментов в вашем коде:
    1. static get SIZE_SMALL() Почему нельзя просто написать static функцию не используя get. На что в данном случае get влияет ?
    2.Почему вы записали так образом this.toppings.push(topping); return this; а не таким return this.toppings.push(topping); ?
  • Как корректно реализовать код?

    chokoroko
    @chokoroko Автор вопроса
    mayton2019 спасибо большое за ответ но на данный момент я только изучаю JS. В данной задаче я только начинаю работать с class и ООП
  • Как корректно реализовать код?

    chokoroko
    @chokoroko Автор вопроса
    Александр спасибо за ответ. Могли бы вы пожалуйста объяснить некоторые моменты в вашем коде.
    1. Почему вы данные строки this.size = size; this.stuffing = stuffing; записали таким образом, а
    строку this.toppings = []; записали как массив.
    2. Могли бы вы объяснить что этот код делает и как он работает
    calculateCalories() {
            const toppingCalories = this.toppings.reduce((total, topping) => total + topping.calories, 0);
            return this.size.calories + this.stuffing.calories + toppingCalories;
        }
    
        calculatePrice() {
            const toppingPrice = this.toppings.reduce((total, topping) => total + topping.price, 0);
            return this.size.price + this.stuffing.price + toppingPrice;
        }
  • Почему некорректно работает код?

    chokoroko
    @chokoroko Автор вопроса
    Сергей Соколов Задание: Нужно извлечь пользу из дескрипторов. При проверке работника пытайтесь вызвать функцию lieToEmployer, в которой будете пытаться напрямую изменить свойства объекта работника (employee). Эмулируйте случаи, когда соврать удалось, а если нет.
  • Почему некорректно работает код?

    chokoroko
    @chokoroko Автор вопроса
    Сергей Соколов подскажите вы вот так имели ввиду сделать ?
    function hireNewEmployee (employee,filters) {
        const reasons = [];
        let lieCounter = 0;
        Object.entries(filters).forEach(([name,func]) => {
            if (func(employee[name]) === false) {
                function lieToEmployer (employee) {
                    Object.defineProperties(employee, {
                        age: {
                            value: 27
                        },
                        education: {
                            value: 'higher'
                        },
                        experience: {
                            value: 7
                        }
                    });
                    function checkEmployee (employee) {
                        if (employee.age >= 25
                            && employee.education === 'higher'
                            && employee.experience >= 1
                            && lieCounter < 1) {
                            lieCounter++;
    
                            return lieToEmployer(employee);
                        }
                        else {
                            return false;
                        }
                    }
                    reasons.splice(0);
                    checkEmployee(employee);
                }
                lieToEmployer(employee);
                reasons.push(name);
            }
        });
        return reasons.length > 2
            ? `Not hired: sorry we cannot hire you. Here is why: ${reasons.join(', ')}`
            : 'You are Hired! Congrats!';
    }
    console.log(hireNewEmployee(employee,filters));
  • Почему некорректно работает код?

    chokoroko
    @chokoroko Автор вопроса
    Вадим некорректность работы заключается в том что при основной проверке func(employee[name]) === false я вызываю функцию lieToEmployer которая должна менять значения объекта employee, но она либо их не меняет или меняет с опозданием. Таким образом основная функция hireNewEmployee работает со старыми значениями объекта employee. А мне нужно что после того как функция lieToEmployer поменяла значения объекта employee, функция hireNewEmployee могла сразу с ними работать.