Dynamisch multidimensionaal array op value
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
Code (js)
1
2
3
2
3
var myObject = new Object();
myObject.merk = ["Merk1", "Merk2","Merk3"];
myObject.schaal = ["Schaal1","Schaal2","Schaal3","Schaal4"];
myObject.merk = ["Merk1", "Merk2","Merk3"];
myObject.schaal = ["Schaal1","Schaal2","Schaal3","Schaal4"];
Gewijzigd op 16/08/2014 11:22:39 door Ger van Steenderen
Code (php)
1
2
3
4
5
6
2
3
4
5
6
var myObject = new Object();
function toevoegen(uitArray)
{
myObject.uitArray[1]= ["merkX"];
}
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
Als ik je goed begrijp kan je dit doen:
Code (js)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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);
}
//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)
1
2
3
4
5
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';
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
Gewijzigd op 16/08/2014 11:32:28 door Erwin H
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)
1
2
3
4
5
6
7
8
9
10
11
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
}
{
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
Volgens mij is dat precies wat ik je gegeven heb. Zo niet, dan is je tweede uitleg nog minder duidelijk dan je eerste.