tablice czy obiekty

0

Hej
Bedzie kilka samochodow. Kazdy z nich ma: kolor, cena, rodzaj itp. Zrobic to w tablicy czy jako obiekty? Jak łatwiej?

<div id="BMW">
	<h1 id="nameBmw"></h1>
	Rodzaj<span id="rodzajBmw"></span><br>
	Kolor: <span id="kolorBmw"></span><br>
	Silnik: <span id="silnikBmw"></span><br>
	Cena: <span id="cenaBmw">a<span><br>
</div>

<div id="Audi">
	<h1 id="nameAudi"></h1>
	Rodzaj<span id="rodzajAudi"></span><br>
	Kolor: <span id="kolorAudi"></span><br>
	Silnik: <span id="silnikAudi"></span><br>
	Cena: <span id="cenaAudi">a<span><br>
</div>

<script src="add-content.js"></script>

tablice:

var names = ['BMW', 'Audi'];

var namesBmw = document.getElementById('nameBmw');
namesBmw.textContent = names[0];

var namesAudi = document.getElementById('nameAudi');
namesAudi.textContent = names[1];

var cena= [1200, 1000];

	var cenaBmw = document.getElementById('cenaBmw');
	cenaBmw.textContent = cena[0];
	
	var cenaAudi= document.getElementById('cenaAudi');
	cenaAudi.textContent = cena[1];

Obiekty:

function auta(rodzaj, cena) {
	this.rodzaj= rodzaj;
	this.cena= cena;
}

var bmw= new Auta('BMW', 1200);
var audi= new Auta('Audi', 1000);

function bmw() {
var namesBmw = document.getElementById('nameBmw');
namesBmw.textContent = bmw.rodzaj;

var cenaBmw = document.getElementById('cenaBmw ');
cenaBmw .textContent = Bmw.cena;
}

function audi() {
var namesAudi= document.getElementById('nameAudi');
namesAudi.textContent = audi.rodzaj;

var cenaAudi = document.getElementById('cenaAudi');
cenaAudi.textContent = audi.cena;
}

Bmw();
Audi();

Więc jak to robić? Proszę o porady. Jest jeszcze inny sposób?

1

Hej,
można jeszcze rozważać tablice objektów :) Albo słownik, którego każda wartość także jest słownikiem, przykład

V['Audi']={"kolor": xxxxxx, "rok prod": xxxx, "KM": xxx}

W JS z tego co pamiętam, można używać tablic hashujących do tego typu prezentacji danych, pzdr :)

0

Jak poprzez tablice obiektów?

Dodam, że jeszcze będą metody potem zawarte np. rabat 5%, cena początkowa i końcowa itp.

2
class Samochód {
    constructor(marka,model,kolor,silnik,cena) {
        this.marka = marka;this.model = model;
        this.kolor = kolor;this.silnik = silnik;
        this.cena = cena;
    }
}

class Strona{
    constructor(){
        this.samochody = [];
        this.tekst = "";
    }

    dodajSamochod(samochod){
        this.samochody.push(samochod)
    }

    pokaz(){
        for(let i=0;i<this.samochody.length;i++){
            this.tekst += "<div><h1>";
            this.tekst += this.samochody[i].marka + "</h1>Model: ";
            this.tekst += this.samochody[i].model + "</br>Kolor: ";
            this.tekst += this.samochody[i].kolor + "</br>Silnik: ";
            this.tekst += this.samochody[i].silnik + "</br>Cena: ";
            this.tekst += this.samochody[i].cena + "</br></div>";
        }
        document.getElementById("content").innerHTML = this.tekst;
    }
}

let daewoo = new Samochód("Daewoo","Lanos","Czerwony","rakietowy",100);
let opel = new Samochód("Opel","Astra","Czarny","spalinowy",200);
let strona = new Strona();

strona.dodajSamochod(daewoo);
strona.dodajSamochod(opel);
strona.pokaz();

0

O kurcze, dzięki.
Mało kodu elegancko.
Poczytam o klasach - jeszcze do tego nie doszedłem :)

1

wersja 2

class Samochód {
    constructor(marka,model,kolor,silnik,cena) {
        this.marka = marka;this.model = model;
        this.kolor = kolor;this.silnik = silnik;
        this.cena = cena;
    }

    pokaz() {
        let tekst = "";
        tekst += "<h1>";
        tekst += this.marka + "</h1>Model: ";
        tekst += this.model + "</br>Kolor: ";
        tekst += this.kolor + "</br>Silnik: ";
        tekst += this.silnik + "</br>Cena: ";
        tekst += this.cena + "</br>";
        return tekst;
    }
}

class Strona{
    constructor(){
        this.samochody = [];
    }

    dodajSamochod(samochod){
        this.samochody.push(samochod)
    }

    pokaz(){
        let tekst = "<div>";
        for(let i=0;i<this.samochody.length;i++){
            tekst += this.samochody[i].pokaz(); 
        }
        tekst += "</div>";
        document.getElementById("content").innerHTML = tekst;
    }
}

let daewoo = new Samochód("Daewoo","Lanos","Czerwony","rakietowy",100);
let opel = new Samochód("Opel","Astra","Czarny","spalinowy",200);
let strona = new Strona();

strona.dodajSamochod(daewoo);
strona.dodajSamochod(opel);
strona.pokaz();


0

Jak dodać dodatkową funkcję?

	rabat() {
		var rabat= this.cena * 2%;
		return rabat;
		**/** Teraz chcę aby wynik się pojawił pod Ceną pod nazwa Cena z rabatem**/**
	}

na pewno trzeba dodać w funkcji pokaz():
this.tekst += this.samochody[i].rabat + rabat() + "</br></div>";
tyle że nie działa...
prosze o pomoc

1

Pewnie this.rabat(), nie rabat() przy wywołaniu, zależy jak wygląda kod.

1 użytkowników online, w tym zalogowanych: 0, gości: 1