Je suis en train de créer une matrice 3d en javascript, et je veux mettre à jour ses valeurs en utilisant ses coordonnées:matrice 3D avec les coordonnées en javascript
var xAxis = [];
var yAxis = [];
var ZAxis = [];
var dimensions = 4;
//initalize matrix
for (var i=0;i<dimensions;i++){
xAxis.push(0);
}
for (var j=0;j<dimensions;j++){
yAxis.push(xAxis);
}
for (var k=0;k<dimensions;k++){
matrix.push(yAxis);
}
//check value of one point in the matrix
matrix[1][2][3]; //returns 0 as expected
//update value of matrix using same coordinates
matrix[1][2][3] = 2;
Quand je lance la dernière étape, il non seulement mettre à jour mon prévu 1 [2] [3] coordonne, mais il met également à jour chaque troisième valeur de chaque tableau à 2 comme vous le verrez dans l'image:
Comment puis-je gérer la mise à jour seule la valeur ce que je veux?? Je veux dire, le nombre 2 ne devrait être que dans un point de coordonnées, dans ce cas 1 [2] [3].
Note: Je pense que ça a quelque chose à faire, il pourrait être assignant les tableaux originaux dans la matrice au lieu de nouvelles copies d'eux-mêmes, alors quand je mets à jour une coordonnée, je suis réellement mettre à jour le tableau original, et les autres tableaux ne font que pointer sur l'original, alors c'est pour ça que ça se reflète là aussi?
Les tableaux sont passés par référence. Ensuite, si vous modifiez un tableau, vous modifiez les autres. – wawawoom
J'ai changé 'yAxis.push (xAxis);' à 'yAxis.push (xAxis.slice (0));' et il semble changer le comportement, mais je pense que je dois faire quelque chose avec le 0 (zéro) J'assigne au début et continue de mettre à jour les autres tableaux. savez-vous comment puis-je y parvenir? Merci! – randomguy04