I'm writing some script and so next problem occurred.
I've got multiple functions:
A
returns bool, B
and C
return nothing.
if (A(array1, array2, array3, int1, int2, int3, int4, bool)) {
B(array1, array2, array3, int1, int2, int3, int4, bool);
}
B
looks like:
B(array1, array2, array3, int1, int2, int3, int4, bool){
C(array1, array2, array3, int1, int2, int3, int4, bool);
someCode;
}
C
looks like:
C(array1, array2, array3, int1, int2, int3, int4, bool){
array1 = thisFunctionChangesArrayInside(array1, some, parameters);
array2 = thisAnotherFunctionChangesArrayInside(array2, some, parameters);
someCode;
}
Both of thisFunctionChangesArrayInside()
and thisAnotherFunctionChangesArrayInside()
returns arrays.
Why is it incorrect? (why arrays don't change?)
EDIT:
thisFunctionChangesArrayInside
and thisAnotherFunctionChangesArrayInside
functions:
function nowaPozycjaKolor(kolor, x1, y1, x2, y2) {
var pomocniczaKolor = new Array(); //tablica zupełnie pomocnicza
for (var i = 0; i < 8; i++) { //ona reprezentuje kolory
pomocniczaKolor[i] = new Array();
for (var j = 0; j < 8; j++) {
pomocniczaKolor[i][j] = kolor[i][j];
}
}
pomocniczaKolor[x2][y2] = pomocniczaKolor[x1][y1];
pomocniczaKolor[x1][y1] = 0;
return pomocniczaKolor;
}
function nowaPozycjaFigur(figury, x1, y1, x2, y2) {
var pomocniczaFigur = new Array(); //tablica zupełnie pomocnicza
for (var i = 0; i < 8; i++) { //ona reprezentuje figury
pomocniczaFigur[i] = new Array();
for (var j = 0; j < 8; j++) {
pomocniczaFigur[i][j] = figury[i][j];
}
}
pomocniczaFigur[x2][y2] = pomocniczaFigur[x1][y1];
pomocniczaFigur[x1][y1] = 0;
return pomocniczaFigur;
}
NOT SOLUTION as for me:
function nowaPozycjaKolor(kolor, x1, y1, x2, y2) {
kolor[x2][y2] = kolor[x1][y1];
kolor[x1][y1] = 0;
return kolor;
}
function nowaPozycjaFigur(figury, x1, y1, x2, y2) {
figury[x2][y2] = figury[x1][y1];
figury[x1][y1] = 0;
return figury;
}
This almost works as I want to:
function makeNewArray(x) {
// make copy of array passed in
var y = x.slice(0);
// modify the copy
y[3]=10;
y[4]=20;
return y;
}
function funkcja(a){
a = makeNewArray(a);
}
var arr = [1,2,3];
alert(arr); // [1,2,3]
funkcja(arr);
alert(arr); // [1,2,3]
alert(makeNewArray(arr)); // [1,2,3,10,20]
alert(arr); // [1,2,3]
arr = makeNewArray(arr);
alert(arr); // [1,2,3,10,20]
SOLVED:
function makeNewArray(x) {
// make copy of array passed in
var y = x.slice(0);
// modify the copy
y[3]=10;
y[4]=20;
return y;
}
function funkcja(a){
for(var i=0;i<5;i++){
a[i] = makeNewArray(a)[i];
//alert(a[i]);
}
}
var arr = [1,2,3,4,5];
alert(arr); // [1,2,3]
funkcja(arr);
alert(arr); // [1,2,3,10,20]
alert(makeNewArray(arr)); // [1,2,3,10,20]
alert(arr); // [1,2,3,10,20]
arr = makeNewArray(arr);
alert(arr); // [1,2,3,10,20]