7 svar
53 visningar
sandy99 är nöjd med hjälpen!
sandy99 43
Postad: 3 sep 2020

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)
}
}

Laguna Online 11646
Postad: 3 sep 2020

Ska det inte vara this.dishes.indexOf?

sandy99 43
Postad: 3 sep 2020

på type_menu_dishes == menar du?

Laguna Online 11646
Postad: 3 sep 2020

Där det står indexOf, tänkte jag.

Vad blir det för fel? 

sandy99 43
Postad: 3 sep 2020

TypeError: undefined is not an object (evaluating 'this.dishes.find')

Laguna Online 11646
Postad: 3 sep 2020

Står det this.dishes.find nånstans i din kod?

sandy99 43
Postad: 3 sep 2020

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;

Laguna Online 11646
Postad: 3 sep 2020

Det går nog inte att debugga småsnuttar, utan man måste se hela koden.

Svara Avbryt
Close