7 svar
180 visningar
sandy99 är nöjd med hjälpen
sandy99 42
Postad: 3 sep 2020 16:44

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 28435
Postad: 3 sep 2020 16:51

Ska det inte vara this.dishes.indexOf?

sandy99 42
Postad: 3 sep 2020 16:54

på type_menu_dishes == menar du?

Laguna Online 28435
Postad: 3 sep 2020 18:59

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

Vad blir det för fel? 

sandy99 42
Postad: 3 sep 2020 21:14

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

Laguna Online 28435
Postad: 3 sep 2020 21:18

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

sandy99 42
Postad: 3 sep 2020 21:20

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 28435
Postad: 3 sep 2020 21:25

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

Svara Avbryt
Close