13. oktober 2009 - 15:01Der er
7 kommentarer og 1 løsning
Objektmanipulering
Hej,
Jeg har funktion, der medtager et array som parameter. Denne funktion returnerer et objekt. Jeg vil gerne manipulere med det objekt.
function createBlah(labels) { var optionsObj = { ... series: [ {label: 'bob'}, {label: 'per'} ... ] ...
Her vil jeg så gerne redigere i indholdet af objektet i forhold til min parameter - inden objektet skal returneres
Jeg ved, man KAN gøre sådan her: optionsObj.series = [ {label: labels[0]}, {label: labels[1]} ];
Jeg vil dog vældig gerne have min series til at være af dynamisk størrelse, så jeg ville gerne kunne iterere henover mit array, og så manipulere objektet ud fra det. Problemet er lidt, at indholdet af optionsObj.series ikke bare er en strengværdi eller noget i den stil, så jeg ved ikke helt, hvordan jeg skal gribe det an.
Jeg forestillede mig noget i stil med: (incomming skrammel/pseudo) optionsObj.series = [; //ved godt, det ikke kan lade sig gøre, men illustratorisk giver det mening for (var i=0;i<labels.length;i++) { optionsObj.series += {label: labels[i]}; if ((i+1) < labels.length){ //der er mindst 1 element mere optionsObj.series += ,; } } optionsObj.series += ];
Jeg har funktion, der medtager et array som parameter. Denne funktion returnerer et objekt. Jeg vil gerne manipulere med det objekt. Ud fra din kode ser det ud til at du selv laver objektet. Hvorfor vil du manipulere det efterfølgende?
Jeg vil dog vældig gerne have min series til at være af dynamisk størrelse, så jeg ville gerne kunne iterere henover mit array Med "mit array" mener du funktionens parameter "labels"? Ellers er jeg ikke med
Problemet er lidt, at indholdet af optionsObj.series ikke bare er en strengværdi eller noget i den stil, så jeg ved ikke helt, hvordan jeg skal gribe det an Hvad er det så? Lidt indsigt ville hjælpe meget
Ja, jeg laver selv mit objekt, men jeg ved ikke, hvordan jeg laver det dynamisk ud af indholdet af et array - det er det, der er hele pointen...
Ja, jeg mener "labels" - som jeg skrev i starten er min parameter et array.
"Hvad er det så?" <- se det er her, jeg var på bar grund - ellers havde jeg ikke stillet mit spørgsmål :) Sagen er den, at jeg er ikke superskarp til objects i javascript. Jeg har lavet mit objekt via eksempler, og har fået skidtet til at virke - men når jeg så skal lave det dynamisk, begynder det at knibe.
Hvis jeg forstår dig korrekt, så skal createBlah() returnere et objekt der har en member (attribut) med navn "series" som er et array (eller en liste) indeholdende andre elementer. Har jeg ret?
var series = new Array(); for(i in labels) { series..push(labels[i]); }
En god ting at være opmærksom når man roder med Javascript, er at der ikke er ret stor forskel på et array og et objekt. Du kan (næsten) arbejde med dem på samme måde.
Hvis du itererer over et array for du alle elementerne deri. Hvis du itererer over et objekt for du alle attributerne på objektet. Eksempelvis:
<script type="text/javascript"> var someArray = new Array('john', 'jack', 'johnny'); for(i in someArray) { document.write(i + ' = ' + someArray[i]); }
var someObject = {'name':'jack', 'age':20, 'phone':'12345678'} for(i in someObject) { document.write(i + ' = ' + someObject[i]); } </script>
Jeg har ikke lige testet ovenstående, men det skulle gerne skrive noget lignende:
0 = john 1 = jack 2 = johnny name = jack age = 20 phone = 12345678
"Hvis jeg forstår dig korrekt, så skal createBlah() returnere et objekt der har en member (attribut) med navn "series" som er et array (eller en liste) indeholdende andre elementer. Har jeg ret?" <- det skulle jeg mene, ja.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.