[LÖST] Javascript - Class med Array
Hej!
Sitter och gör lite skola och har fastnat lite och tänkte be om lite hjälp.
Jag har en klass som innehåller en array med objekt från en annan klass.
Mitt problem är att jag kan inte komma åt längden på min array med minArray.length.
När jag försöker komma åt längden med minArray.length från jag undefined som värde, dock fungerar tex minArray[0]namn.
Det jag vill åstadkomma är att loopa igenom min lista med en metod i klassen minKlass och därav hade jag velat ha tillgång till längden på min array.
EDIT: Här är koden är än så länge. Kör jag denna får jag resultatet jag vill. Men problemet är att jag inte kör loopen i calcTotal med array.length utan nu är det hårdkodat.
//Skapar en class
class Vara {
constructor(namn, pris, beskrivning, antal) {
this.namn = namn;
this.pris = pris;
this.beskrivning = beskrivning;
this.antal = antal;
}
//Skapar en metod i klassen
calcSubTotal() {
return this.pris * this.antal; // Returnerar pris * antal
}
}
//Skapar en class
class Kundkorg {
constructor(varor) {
this.varor = varor;
}
//Skapar en metod i klassen
calcTotal() {
var totalPris = 0; //Variabel för att räkna totalpris
//Loopar genom array och lägger ihop totalpris. HÄR ÄR MITT PROBLEM
for (var i = 0; i < 3; i++) {
totalPris += lista[i].pris * lista[i].antal;
}
return totalPris; //Returnerar resultat
}
}
//Visar resultat i webbläsare
function Visa() {
var div = document.getElementById("div");
div.innerHTML = lista.calcTotal();
document.body.appendChild(div);
}
//Skapar objekt i class Vara
potatis = new Vara("potatis", 7, "mjölig", 20);
mjolk = new Vara("mjölk", 12, "lättmjölk", 2);
brod = new Vara("bröd", 22, "ljust", 1);
//Skapar en array i class Kundkorg
lista = new Kundkorg();
//Lägger till objekt från Vara i Kundkorg array
lista[0] = potatis;
lista[1] = mjolk;
lista[2] = brod;
Tack på förhand
Postar min lösning också:
//Skapar en class
class Vara {
constructor(namn, pris, beskrivning, antal) {
this.namn = namn;
this.pris = pris;
this.beskrivning = beskrivning;
this.antal = antal;
}
//Skapar en metod i klassen
calcSubTotal() {
return this.pris * this.antal; // Returnerar pris * antal
}
}
//Skapar en class
class Kundkorg {
constructor(varor) {
this.varor = varor;
}
//Skapar en metod i klassen
calcTotal() {
var totalPris = 0; //Variabel för att räkna totalpris
//Loopar genom array och lägger ihop totalpris
for (var i = 0; i < lista.varor.length; i++) {
totalPris += lista.varor[i].pris * lista.varor[i].antal;
}
return totalPris; //Returnerar resultat
}
}
//Visar resultat i webbläsare
function Visa() {
var div = document.getElementById("div");
div.innerHTML = lista.calcTotal();
document.body.appendChild(div);
}
//Skapar objekt i class Vara
potatis = new Vara("potatis", 7, "mjölig", 20);
mjolk = new Vara("mjölk", 12, "lättmjölk", 2);
brod = new Vara("bröd", 22, "ljust", 1);
var array = [potatis, mjolk, brod];
var lista = new Kundkorg(array);
[CPU: Intel i5 13600KF] - [Moderkort: Asus TUF Z790] - [Minnen: Corsair Vengeance 2x16 5600MHz] - [GPU: Asus GeForce TUF 4070 Ti] [SSD: Samsung EVO 960 250GB, Samsung 850 500GB] - [Skärm: Msi 27" MAG274QRF-QD] - [Övrigt: Sennheiser HD650, Schiit Modi 2, Schiit Magni 3, Logitech G Pro, Ducky One 2 SF]