Dynamisch multidimensionaal array op value

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Shamrock Modelbouw

Shamrock Modelbouw

16/08/2014 10:41:47
Quote Anchor link
Hoi,

Voor mijn systeem heb ik een multidimensionaal array nodig (in javascript) met de waarde als key.

Een array zou dus zo uit kunnen zien:

Array[merk] - Merk1
--------------------Merk2
--------------------Merk3

Array[schaal] - Schaal 1
----------------------Schaal 2
----------------------Schaal 3
----------------------Schaal 4
----------------------etc...


De arrays moeten dynamisch gevuld kunnen worden.
Ik krijg het alleen niet voor elkaar om een array dynamisch te vullen met een waarde als key. Iemand een idee?

Bedankt!
Gewijzigd op 16/08/2014 10:46:07 door Shamrock Modelbouw
 
PHP hulp

PHP hulp

27/11/2024 07:36:37
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

16/08/2014 11:21:32
Quote Anchor link
Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
var myObject = new Object();
myObject.merk = ["Merk1", "Merk2","Merk3"];
myObject.schaal = ["Schaal1","Schaal2","Schaal3","Schaal4"];
Gewijzigd op 16/08/2014 11:22:39 door Ger van Steenderen
 
Shamrock Modelbouw

Shamrock Modelbouw

16/08/2014 11:27:23
Quote Anchor link
Ok, maar nu nog 2 problemen: merk of schaal ofzo haal ik uit een array, dit zou dus moeten worden

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
var myObject = new Object();

function toevoegen(uitArray)
{
      myObject.uitArray[1]= ["merkX"];
}


Het probleem is dus dat ik én de waarde uit het array moet halen, en stap voor stap het object moet vullen ipv in een keer
 
Erwin H

Erwin H

16/08/2014 11:30:15
Quote Anchor link
Echte associatieve arrays kent javascript niet, dat zijn dan literal objects. Deze werken bijna gelijk aan arrays, maar toch net anders.

Als ik je goed begrijp kan je dit doen:
Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var data = {};

//in dit voorbeeld niet nodig, maar om te laten zien hoe je een dynamische key kunt hebben
var merk_key = 'merk';
var schaal_key = 'schaal';

//elke dynamische key wordt een array, zodat je er meedere waarde in kunt opslaan
data[merk_key] = [];
data[schaal_key] = [];

//vul beide keys, hier met een simpel loopje
for(var i=1; i<=3; i++){
  data[merk_key].push('merk'+i);
  daat[schaal_key].push('schaal'+i);
}

Let overigens op met het aanspreken van je properties in het object literal. Zoals je boven ziet definieer ik een object literal, maar gebruik ik de array notatie. Dat komt omdat als ik de object notatie had gebruikt, javascript letterlijk het property 'merk_key' en niet 'merk' had aangemaakt.
Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
var data  = {};
var merk_key = 'merk';

//dit levert een property merk_key op in mijn object literal, niet een property merk.
data.merk_key = 'iets';


Toevoeging op 16/08/2014 11:31:34:

En aansluitend op je vorige opmerking, nu kan je dus wel de methode van Ger gebruiken
Code (js)
PHP script in nieuw venster Selecteer het PHP script
1
2
var myObject = new Object();
myObject[merk_key] = ["Merk1", "Merk2","Merk3"];
Gewijzigd op 16/08/2014 11:32:28 door Erwin H
 
Shamrock Modelbouw

Shamrock Modelbouw

16/08/2014 11:54:01
Quote Anchor link
Bedankt maar het is toch niet helemaal mijn bedoeling. Ik zal het even beter uitleggen.

Ik wil via het menu instellingen kunnen opslaan (1 of meerdere merken, schalen etc... kunnen selecteren)
Als ik op de link ("Merk 1") klik, dan roep ik de volgende code aan:

<a href='javascript:setSetting('merk', 'volkswagen')'>Volkswagen</a>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
function setSetting(type, waarde)
{
    settingsArray = ["settingLijst", type, waarde];
    saveSettings(settingsArray);
}

function saveSettings(settings)
{
    // Hierin moet een multidimensionaal array (of soortgelijk) worden
    // opgebouwd wat uitziet zoals post 1
}


Hoop dat het nu wat duidelijker is?
Uiteindelijk wil ik dus het elk array uitlezen en aan de hand daarvan de waardes uit de database halen, maar dit systeem heb ik al
 
Erwin H

Erwin H

16/08/2014 12:12:23
Quote Anchor link
Volgens mij is dat precies wat ik je gegeven heb. Zo niet, dan is je tweede uitleg nog minder duidelijk dan je eerste.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.