Ik probeer een matrix aan te maken met onbepaalde hoogte en breedte (een berekening vult getallen in en van tevoren is niet te bepalen hoe groot de matrix wordt). Ik heb daarbij allereerst een initierende functie (die vanuit de body moet worden aangeroepen) die wat begingetallen geeft. Dan volgt een functie die eerst een (voor de visualisatie) horizontale array A aanmaakt en aan het eind van de berekening de array A opslaat op een positie in array B. Vervolgens worden nieuwe voorwaarden berekend en wordt de berekening opnieuw uitgevoerd met een nieuwe A, die op de volgende positie in de verticale B wordt opgeslagen. Heel kort dus als volgt:
Nu lijkt het tot mijn verbazing zo te zijn dat bij verandering van A (waar immers steeds de getallen van worden vervangen bij een nieuwe berekening) de eerder opgeslagen waarden in matrix B óók veranderen, alsof in B[n] werkelijk de info "=A" wordt opgeslagen i.p.v. de sequentie (bijv. 1,2,3,4) die in A zat. Dat lijkt zo omdat hij aan het eind van elke berekening elke entry van B hetzelfde heeft gemaakt (namelijk elke entry is gelijk aan de laatste entry die is berekend, dus de laatste array A) en de eerdere arrays A dus heeft overschreven. Daarnaast, als ik een slotfunctie aanroep als alle berekeningen gedaan zijn, is B weer helemaal leeg indien ik voor de netheid A leegmaak na het opslaan in B en voor het beginnen van een nieuwe berekening. Nu heb ik die verwijdering weggelaten en is de output (helemaal onderaan) gelijk aan een veelvoud van de laatste array A.
Het script is te zien op http://sublex.endoria.net/script2.html. Omdat het >3 jaar geleden is dat ik druk bezig was met html/js/css etc. moest ik weer ff inkomen en heb ik dus veel tussentijdse feedback laten genereren, maar dat maakt het wel overzichtelijk voor problemen.
Wat gaat er fout..?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| function begin() {
var A = new Array(); var B = new Array();
a = 1, b = 2;
een(A,B,a,b);
}
function een(A,B,a,b) {
berekent A met lengte A.length
slaat A op in B[n]
twee(A,B,a,b);
}
function twee(A,B,a,b) {
evalueert wat getallen en geeft nieuwe a en b
een(A,B,a,b);
} |
Nu lijkt het tot mijn verbazing zo te zijn dat bij verandering van A (waar immers steeds de getallen van worden vervangen bij een nieuwe berekening) de eerder opgeslagen waarden in matrix B óók veranderen, alsof in B[n] werkelijk de info "=A" wordt opgeslagen i.p.v. de sequentie (bijv. 1,2,3,4) die in A zat. Dat lijkt zo omdat hij aan het eind van elke berekening elke entry van B hetzelfde heeft gemaakt (namelijk elke entry is gelijk aan de laatste entry die is berekend, dus de laatste array A) en de eerdere arrays A dus heeft overschreven. Daarnaast, als ik een slotfunctie aanroep als alle berekeningen gedaan zijn, is B weer helemaal leeg indien ik voor de netheid A leegmaak na het opslaan in B en voor het beginnen van een nieuwe berekening. Nu heb ik die verwijdering weggelaten en is de output (helemaal onderaan) gelijk aan een veelvoud van de laatste array A.
Het script is te zien op http://sublex.endoria.net/script2.html. Omdat het >3 jaar geleden is dat ik druk bezig was met html/js/css etc. moest ik weer ff inkomen en heb ik dus veel tussentijdse feedback laten genereren, maar dat maakt het wel overzichtelijk voor problemen.
Wat gaat er fout..?
[ Voor 5% gewijzigd door Verwijderd op 12-10-2006 21:00 ]