Multidimensionale array > pulldown menu [unieke waarden]

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • OzBoz
  • Registratie: Maart 2000
  • Laatst online: 16-06 17:07

OzBoz

.:.H.:.I.:.P.:.

Topicstarter
Aangezien ik serieus al dagen van alles aan het proberen ben toch maar eens om hulp vragen. Vanuit een database krijg ik JSON data binnen en het betreft een lijst met records die je gereden hebt met Assetto Corsa.

Dat ziet er zo uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[
    {
        "uid":"1",
        "trackName":"DRIFT",
        "carName":"TOYOTA SUPRA MKIV DRIFT",
        "recordTime":"46788",
        "recordTimeRead":"0:46.788",
        "recordDate":"02 Jul 2016 at 21:27"
    },
    {
        "uid":"2",
        "trackName":"IMOLA",
        "carName":"FERRARI 458 S3"
        ,"recordTime":"243573",
        "recordTimeRead":"4:03.573",
        "recordDate":"09 Sep 2016 at 18:54"
        }
]


Omdat het aantal records heel groot kan zijn autotype*tracks wil ik een filterfunctie maken op de pagina zodat je met 1 pulldown op merk kan selecteren en met de andere pulldown op type.

Ik was aan het proberen om een nieuwe arrays te genereren van autoMerk met daarin de autoTypen. Ik loop er compleet op vast en het is niet voor het eerst dat ik ruzie heb met arrays/objecten.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function createArrays(e) {
  carList = [];
   for ( i = 0; i < e.length; i++ ) {
     carName = e[i].carName;
     carBrand = carName.substr(0,carName.indexOf(' '));
     carType = carName.substr(carName.indexOf(' ')+1);
     if ( $.inArray(carBrand, carList ) === -1 && carBrand != '' ) {
         carList.push(carBrand)
     } else {
         // hier moet dan type toegevoegd worden maar kom er niet meer uit
     }
   }
}


Het lukt mij om een array te krijgen met de automerken. Maar ik krijg er geen typen in met bijvoorbeeld push. Dat kan weer zijn omdat het een object is en geen array maar ik ben de draad kwijt.

Wat ook lukt is bijvoorbeeld carList.push(carBrand, carTtype) maar dan krijg ik gewoon alle resultaten in een array/object en dat is inclusief de dubbele.

Absoluut zeker dat iemand met een beetje verstand van arrays het wellicht snel ziet, ik heb ondertussen alle {[]} [] {} etc combinaties wel gehad geloof ik. Zo langzamerhand is het ook niet grappig meer :/

My Fizion | My 3D prints | LinkedIn

Beste antwoord (via OzBoz op 26-03-2017 11:52)


  • DJMaze
  • Registratie: Juni 2002
  • Niet online
JavaScript:
1
2
3
4
5
6
7
8
carList = {};
if (!carList[carBrand]) {
    carList[carBrand] = {name: carBrand, types: []};
}
if (0 > carList[carBrand].types.indexOf(carType)) {
    carList[carBrand].types.push(carType);
}
console.dir(carList);

[ Voor 7% gewijzigd door DJMaze op 26-03-2017 11:58 ]

Maak je niet druk, dat doet de compressor maar

Alle reacties


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
JavaScript:
1
2
3
4
5
6
7
8
carList = {};
if (!carList[carBrand]) {
    carList[carBrand] = {name: carBrand, types: []};
}
if (0 > carList[carBrand].types.indexOf(carType)) {
    carList[carBrand].types.push(carType);
}
console.dir(carList);

[ Voor 7% gewijzigd door DJMaze op 26-03-2017 11:58 ]

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • OzBoz
  • Registratie: Maart 2000
  • Laatst online: 16-06 17:07

OzBoz

.:.H.:.I.:.P.:.

Topicstarter
Thanks! Kom er al wat mee verder alleen komen er nog geen types in terecht.

Afbeeldingslocatie: https://fizion.nl/zooi/js2.jpg

Ik zie wel wat je doet. Begrijp ook waarom dit wel lukt met push. Zoals je hier ziet had ik nogal wat geprobeerd. Ik puzzel nog even met je tip verder.

Afbeeldingslocatie: https://fizion.nl/zooi/js1.jpg

edit:

Van de tweede if heb ik gemaakt:
code:
1
if ( $.inArray(carType, carList[carBrand].types ) === -1 ) {


En dat werkt! Thanks! Nu de rest ;)

[ Voor 19% gewijzigd door OzBoz op 24-03-2017 22:41 ]

My Fizion | My 3D prints | LinkedIn


Acties:
  • 0 Henk 'm!

  • DJMaze
  • Registratie: Juni 2002
  • Niet online
OzBoz schreef op vrijdag 24 maart 2017 @ 22:31:
Thanks! Kom er al wat mee verder alleen komen er nog geen types in terecht.
Klopt zat expres een bug in. Heb ik nu aangepast omdat je zelf verder bent ;)

Maak je niet druk, dat doet de compressor maar


Acties:
  • 0 Henk 'm!

  • OzBoz
  • Registratie: Maart 2000
  • Laatst online: 16-06 17:07

OzBoz

.:.H.:.I.:.P.:.

Topicstarter
DJMaze schreef op zaterdag 25 maart 2017 @ 09:52:
[...]

Klopt zat expres een bug in. Heb ik nu aangepast omdat je zelf verder bent ;)
Je gelooft mij misschien niet maar ik dacht bij indexof ipv indexOf al dat je dat expres had gedaan om te testen.

Vandaar ook nog even de screenie van dingen die ik voorafgaande mijn vraag al had geprobeerd. Werd er na half stackoverflow te hebben geprobeerd ook niet helemaal goed van. Ben ook geen progger maar heb soms leuke ideetjes die ik graag wil uitvogelen. Als je dan vast zit op iets dan is het na een dag of 3 niet grappig meer. Prettig als je dan weer verder kan.

Het wordt ook wel wat:

Afbeeldingslocatie: https://fizion.nl/zooi/js3.jpg

My Fizion | My 3D prints | LinkedIn