unieke waarden in een Array

Status
Niet open voor verdere reacties.

yveshessels

Gebruiker
Lid geworden
9 jun 2007
Berichten
51
Ik heb een Array met waarden die ik wil tonen op het scherm. In die Array zitten sommige waarden die meer dan 1 keer voorkomen. Hoe kan ik dan op het scherm de volledige inhoud van die Array tonen, maar dan zonder dubbele waarden?

dit heb ik nu:
Code:
function toonFabrikant() {
	if (!document.getElementById) return false;
	var fabrikant = document.getElementById('left');
	var fab="<h3 style='color=red'>Fabrikant</h3>";
	for (var i=0; i<autos.length;i++) {
	    if(autos[i].Fabrikant.match(
			fab += autos[i].Fabrikant;
			fab += "<br />";
	}
	fabrikant.innerHTML = fab;
}

en dit is de Array :

Code:
//Auto klasse
function Auto(fabrikant,model,koetswerk,brandstof,bouwjaar,kilometers,vermogen,cylinderinhoud,prijs){
	//Properties
	this.Fabrikant = fabrikant;
	this.Model = model;
	this.Koetswerk = koetswerk;
	this.Brandstof = brandstof;
	this.Bouwjaar = bouwjaar;
	this.Kilometers = kilometers;
	this.Vermogen = vermogen;
	this.Cylinderinhoud = cylinderinhoud;
	this.Prijs = prijs;
	this.Fotos = new Array();
}

//publieke variabele Auto array vullen
var autos = new Array();
autos[0] =	new Auto("Audi", "80 1.9 Turbo", "4-deurs", "Diesel", 1993, 130000,"75 pk","1896 cc", 3500);
autos[0].Fotos[0] = "Audi-80_6364333.jpg";
autos[0].Fotos[1] = "Audi-80_6364334.jpg";
autos[0].Fotos[2] = "Audi-80_6364336.jpg";
autos[1] =	new Auto("Audi", "80 1.9 TDi", "", "", 0, 0," pk"," cc", 0);
autos[2] =	new Auto("Audi", "100 2.0i", "", "", 0, 0," pk"," cc", 0);
autos[3] =	new Auto("Audi", "A5 2.7 TDi V6", "", "", 0, 0," pk"," cc", 0);
autos[4] =	new Auto("Citroen", "2CV", "4-deurs", "Benzine", 1986, 104000,"35 pk","?", 3000);
autos[4].Fotos[0] = "Citroen-2CV_6426824.jpg";
autos[4].Fotos[1] = "Citroen-2CV_6426825.jpg";
autos[4].Fotos[2] = "Citroen-2CV_6426823.jpg";
autos[5] = new Auto("Volkswagen", "Touran", "5-deurs", "Diesel", 2004, 126000,"100 pk","1896 cc", 12500);
autos[5].Fotos[0] = "vw_727621_1.jpg";
autos[5].Fotos[1] = "vw-727621_5.jpg";
autos[6] = new Auto("Volkswagen", "Golf Plus", "4-deurs", "Benzine", 2008, 130000,"90 pk","1900 cc", 18500 );
autos[6].Fotos[0] = "Volkswagen-Golf-Plus_6006542.jpg"
autos[6].Fotos[1] = "Volkswagen-Golf-Plus_6006540.jpg"
autos[6].Fotos[2] = "Volkswagen-Golf-Plus_6006541.jpg"
autos[7] = new Auto("Volkswagen", "Polo 1.2i", "Break", "Benzine", 2006, 15989,"65 pk","1198  cc", 10200 );
autos[7].Fotos[0] = "Volkswagen-Polo_6403583.jpg"
autos[7].Fotos[1] = "Volkswagen-Polo_6403584.jpg"

Op het scherm krijg ik dus dit te zien:

Code:
Fabrikant
Audi
Audi
Audi
Audi
Citroen
Volkswagen
Volkswagen
Volkswagen

en het moet dit zijn:
Code:
Fabrikant
Audi
Citroen
Volkswagen

Iemand die hier een oplossing voor heeft?
 
voordat je het write op t scherm, eerst alles opnieuw in een array stoppen, maar ALLEEN als het nog niet in de array staat. Dat gaat, even denken, je 1 extra variabele opleveren en 1 extra loop.

Succes:thumb:
 
Ik heb echt problemen met Arrays....
Nu heb ik deze functie toegevoegd:

Code:
function nieuw() {
    var nieuw = new Array();
    var aantal = 0;
    var status = false;
    for(var i=0;i<autos.length;i++){
        if(nieuw[aantal].indexOf(autos[i].Fabrikant) == -1) status = true;
        else status = false;
        if(status) nieuw[aantal] = autos[i].Fabrikant;
        aantal++;
        alert(nieuw[aantal].length);
    }
}

firebug zegt :

Code:
nieuw[aantal] has no properties

Ik ben denk ik nog niet mee met het gebruik van meerdere Arrays...
Wat is mijn fout hier?
 
Ik heb het ondertussen gevonden :thumb: (bedankt Vegras!)
voor de geïnteresseerden :

Code:
function toonMerken() {
    [COLOR="Red"]var merk = "";[/COLOR]
    var ul = document.createElement('ul');
    ul.id = 'lijst_fabrikant';
    document.getElementById('left').appendChild(ul);
    for (var i=0;i<autos.length;i++) {
        [COLOR="red"]if( merk != autos[i].Fabrikant ) {
            merk = autos[i].Fabrikant;[/COLOR]            
            var li = document.createElement('li');
            var a = document.createElement('a');
            a.href = 'javascript:toonTabel(' + i + ')';
            li.id = merk;
            var txt = document.createTextNode(merk);
            a.appendChild(txt);
            li.appendChild(a);
            ul.appendChild(li);
        }
    }    
}
De lijnen in het rood had ik nodig, al dat zoekwerk dus voor zo iets simpels :shocked:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan