Byta ut/lägga till ett nytt element i en array
Hej! Jag klurar på en uppgift där jag har en meny med olika rätter, där varje rätt har en "type", där typen är t.ex. varmrätt, förrätt, osv.
I en av klassens metoder ska jag lägga till en ny rätt på menyn. Men, om det redan finns en rätt i menyn med den typen ska den rätten tas bort.
För att göra detta har jag tänkt använda funktionen splice().
Arrayn med menyn är sparad som this.dishes och dish är rätten som ska läggas till, och jag vet att jag kan erhålla dish "as a result" av DishSource.getDishDetails() or DishSource.searchDishes()
Jag har valt att skriva den såhär, men får fel:
addToMenu(dish) {
type_dish == DishSource.getDishDetails(dish.type);
type_menu_dishes == this.dishes.type;
if (type_dish === type_menu_dishes) {
this.dishes.splice(indexOf(type_menu_dishes), 1, dish);
} else {
this.dishes.push(dish)
}
}
Ska det inte vara this.dishes.indexOf?
på type_menu_dishes == menar du?
Där det står indexOf, tänkte jag.
Vad blir det för fel?
TypeError: undefined is not an object (evaluating 'this.dishes.find')
Står det this.dishes.find nånstans i din kod?
ja, på ett ställe ska jag hitta en rätt med hjälp av dess typ och där har jag skrivit:
getDishOfType(type){
let dish = this.dishes.find(dish => dish.type === type);
och också när jag ska returna en rätt givet dess id:
getDishDetails(id) {
let x = this.dishes.find(x => x.type == DishSource.getDishDetails(dish.type).type);
return x;
Det går nog inte att debugga småsnuttar, utan man måste se hela koden.