function Microwave() {
this.dishes = [{ nameOfDish: 'potato', time: 30 }, { nameOfDish: 'pizza', time: 45 }]
}
Microwave.prototype.cookDish = function (nameOfDish) {
this.disches.find(function(currentValue, index, arr){
})
};
const microwave = new Microwave( );
microwave.cookDish('potato')
исходя из значения time будет запускать таймер и по истечении оного - выводить алерт. Как это можно реализовать?
function Microwave() {
this.dishes = [{
nameOfDish: 'potato',
time: 30
}, {
nameOfDish: 'pizza',
time: 45
}]
}
Microwave.prototype.cookDish = function(nameOfDish) {
this.dishes.find(function(currentValue, index, arr) {
if(currentValue.nameOfDish === nameOfDish){
myAlert(currentValue);
return true;
}
});
};
function myAlert(obj){
setTimeout(_ => console.info(`Name: ${obj.nameOfDish}; Time: ${obj.time}`), obj.time);
}
const microwave = new Microwave();
microwave.cookDish('potato')
Метод .find возвращает элемент массива, для которого переданная функция-callback вернет true.
Для поиска элемента по свойству nameOfDish можно использовать следующую функцию:
(dish) => dish.nameOfDish == nameOfDish;
Далее взять у найденного объекта свойство time, и использовать его в качестве второго параметра для функции setTimeout, который задает время задержки в миллисекундах.
вызов setTimeout для найденного элемента может выглядеть так
setTimeout(alert, dish.time, dish.nameOfDish);
Если подразумевалось, что значение свойства time - это секунду, то перед передачей в качестве параметра стоит привести их к миллисекундам, для этого умножив на 1000.
Все в сборе может выглядеть так:
function Microwave() {
this.dishes = [{
nameOfDish: 'potato',
time: 1000
}, {
nameOfDish: 'pizza',
time: 45
}]
}
Microwave.prototype.cookDish = function(nameOfDish) {
var dish = this.dishes.find(dish => dish.nameOfDish == nameOfDish);
setTimeout(alert, dish.time, dish.nameOfDish);
};
const microwave = new Microwave();
microwave.cookDish('potato')
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники