Ребят, решаю задачу, запнулся на последнем пункте, буду признателен за помощь
const atTheOldToad = {
potions: [{
name: 'Зелье скорости',
price: 460
},
{
name: 'Дыхание дракона',
price: 780
},
{
name: 'Каменная кожа',
price: 520
},
{
name: 'жаба',
price: 460
}
],
getPotions() {
return this.potions
},
addPotion(potionName) {
if (this.potions.includes(potionName)) {
return `Зелье ${potionName} уже есть в инвентаре!`;
}
this.potions.push(potionName);
},
// пока все хорошо
removePotion(potionName) {
for (let i = 0; i < this.potions.length; i++) {
console.log(this.potions[i]);
if (potionName === this.potions[i].name) {
console.log('мы нашли такой продукт');
this.potions.splice(i, 1)
}
}
console.log('---------------------------------------');
},
//исправили теперь все хорошо
//а вот тут ниже пошли проблемв
for (let potion of Object.values(this.potions)) {
if (oldName === potion.name) {
console.log('greeeettttt');
console.log(potion.name);
potion.name === 'rtyffgdfgdf'
console.log(potion.name);
}
console.log(potion);
}
// Пиши код выше этой строки
}
}
// console.log(atTheOldToad.potions, );
// atTheOldToad.getPotions()
//console.log(atTheOldToad.getPotions());
atTheOldToad.removePotion('жаба') //console.log(atTheOldToad.removePotion());
atTheOldToad.updatePotionName('Дыхание дракона', 'Полиморф')
// должно выполняться такое условие
//Для исходного объекта после вызова метода atTheOldToad.updatePotionName('Дыхание дракона', 'Полиморф'), в свойстве potions будет массив [ { name: 'Зелье скорости', price: 460 }, { name: 'Полиморф', price: 780 }, { name: 'Каменная кожа', price: 520 } ].
Для исходного объекта после вызова метода atTheOldToad.updatePotionName('Каменная кожа', 'Зелье неуязвимости'), в свойстве potions будет массив [ { name: 'Зелье скорости', price: 460 }, { name: 'Дыхание дракона', price: 780 }, { name: 'Зелье неуязвимости', price: 520 } ].
Ответы (2 шт):
Автор решения: Pilaton
→ Ссылка
Переделал вам немного код. Как я понял, работать он должен был именно так.
const atTheOldToad = {
potions: [{
name: 'Зелье скорости',
price: 460,
},
{
name: 'Дыхание дракона',
price: 780,
},
{
name: 'Каменная кожа',
price: 520,
},
{
name: 'Сок жабы',
price: 460,
},
],
getPotions() {
return this.potions;
},
addPotion(potionName, price) {
if (this.potions.some((obj) => obj.name === potionName)) {
return `Зелье ${potionName} уже есть в инвентаре!`;
}
this.potions.push({
name: potionName,
price: price,
});
return this.potions;
},
removePotion(potionName) {
return this.potions.filter((obj) => obj.name !== potionName);
},
updatePotionName(potionName, newPotionName) {
return this.potions.map((obj) => {
if (obj.name === potionName) {
obj.name = newPotionName;
}
return obj;
});
},
// Пиши код выше этой строки
};
console.log('atTheOldToad.getPotions()', atTheOldToad.getPotions());
console.log("atTheOldToad.addPotion('Мозг петуха', 300)", atTheOldToad.addPotion('Мозг петуха', 300));
console.log("atTheOldToad.removePotion('Сок жабы')", atTheOldToad.removePotion('Сок жабы'));
console.log(
"atTheOldToad.updatePotionName('Дыхание дракона', 'Полиморф')",
atTheOldToad.updatePotionName('Дыхание дракона', 'Полиморф')
);
Автор решения: Влад Медведев
→ Ссылка
getPotions() {
return this.potions;
},
addPotion(newPotion) {
for (const item of this.potions) {
if (item.name === newPotion.name) {
return `Error! Potion ${newPotion.name} is already in your inventory!`;
}
}
const newProduct = {
...newPotion,
};
this.potions.push(newPotion);
},
removePotion(potionName) {
for (let i = 0; i < this.potions.length; i += 1) {
const potion = this.potions[i];
if (potionName === potion.name) {
this.potions.splice(i, 1);
}
}
},
updatePotionName(oldName, newName) {
let resalt = `Potion ${oldName} is not in inventory`;
for (let i = 0; i < this.potions.length; i += 1) {
const potion = this.potions[i];
if (oldName === potion.name) {
potion.name = newName;
resalt = `Found ${oldName} change to ${newName} `;
}
}
return console.log(resalt);
},
// Пиши код выше этой строки
};