Comment faire une copie de tableau, mais sans instanci=E9 l'original.
Je m'explique,
voici un morceau de mon code,
ARM[1][2]=3DARM[1][1];
ARM[1][3]=3DARM[1][1];
ARM[1][4]=3DARM[1][1];
ARM[1][1] contient un tableau.
en modifiant une valeur :
ARM[1][2][0][1]=3D2;
je modifie non seulement ARM[1][2][0][1] ,mais aussi ARM[1][1][0][1]
et ARM[1][3][0][1] et ARM[1][4][0][1]
puisqu'au lieu de copier le tableau, il ne copie vraissemblablement
que le pointeur.
Y a t-il moyen de copier le tableau et non le pointeur ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ASM
Comment faire une copie de tableau, mais sans instancié l'original. Je m'explique, voici un morceau de mon code, ARM[1][2]=ARM[1][1]; ARM[1][3]=ARM[1][1]; ARM[1][4]=ARM[1][1];
ARM[1][1] contient un tableau. en modifiant une valeur : ARM[1][2][0][1]=2;
je modifie non seulement ARM[1][2][0][1] ,mais aussi ARM[1][1][0][1] et ARM[1][3][0][1] et ARM[1][4][0][1] puisqu'au lieu de copier le tableau, il ne copie vraissemblablement que le pointeur.
Il ne copie rien du tout, puisque tes instructions ne disent que les ARM[1][2], ARM[1][3], ARM[1][4] contiennent le tableau de ARM[1][1] les 4 trucs sont donc un seul et même tableau.
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Comment faire une copie de tableau, mais sans instancié l'original.
Je m'explique,
voici un morceau de mon code,
ARM[1][2]=ARM[1][1];
ARM[1][3]=ARM[1][1];
ARM[1][4]=ARM[1][1];
ARM[1][1] contient un tableau.
en modifiant une valeur :
ARM[1][2][0][1]=2;
je modifie non seulement ARM[1][2][0][1] ,mais aussi ARM[1][1][0][1]
et ARM[1][3][0][1] et ARM[1][4][0][1]
puisqu'au lieu de copier le tableau, il ne copie vraissemblablement
que le pointeur.
Il ne copie rien du tout, puisque tes instructions ne disent que
les ARM[1][2], ARM[1][3], ARM[1][4] contiennent le tableau de ARM[1][1]
les 4 trucs sont donc un seul et même tableau.
Comment faire une copie de tableau, mais sans instancié l'original. Je m'explique, voici un morceau de mon code, ARM[1][2]=ARM[1][1]; ARM[1][3]=ARM[1][1]; ARM[1][4]=ARM[1][1];
ARM[1][1] contient un tableau. en modifiant une valeur : ARM[1][2][0][1]=2;
je modifie non seulement ARM[1][2][0][1] ,mais aussi ARM[1][1][0][1] et ARM[1][3][0][1] et ARM[1][4][0][1] puisqu'au lieu de copier le tableau, il ne copie vraissemblablement que le pointeur.
Il ne copie rien du tout, puisque tes instructions ne disent que les ARM[1][2], ARM[1][3], ARM[1][4] contiennent le tableau de ARM[1][1] les 4 trucs sont donc un seul et même tableau.
-- Stephane Moriaux et son (moins) vieux Mac déjà dépassé
Cenekemoi
Comment faire une copie de tableau, mais sans instancié l'original. Je m'explique, voici un morceau de mon code, ARM[1][2]=ARM[1][1]; ARM[1][3]=ARM[1][1]; ARM[1][4]=ARM[1][1];
ARM[1][1] contient un tableau. en modifiant une valeur : ARM[1][2][0][1]=2;
je modifie non seulement ARM[1][2][0][1] ,mais aussi ARM[1][1][0][1] et ARM[1][3][0][1] et ARM[1][4][0][1] puisqu'au lieu de copier le tableau, il ne copie vraissemblablement que le pointeur.
Y a t-il moyen de copier le tableau et non le pointeur ?
Le moyen béton pour copier un tableau :
var a = [1,2,3]; var b = a.concat();
"b" peut alors être modifié sans conséquence pour "a".
Toutefois, attention au piège classique :
var a = [ [1,2,3], [4,5,6], [7,8,9] ]; var b = a.concat();
Alors, "b[1] = [0,2];" ne modifiera pas "a", mais :
var c = b[1]; // "c" vaut alors [4,5,6]
c[1] = 99; // "c" vaut alors [4, 99, 6]
...mais "a" vaut alors : [ [1,2,3], [4,99,6], [7,8,9] ];
Il faut donc faire très attention ; ce qui est dit ici pour les Array est également vrai pour tout objet Javascript.
Pour fonctionner, voici la duplication de "a" :
var b = []; for (var i=0; i < a.length; i++) { b[i] = a[i].concat(); }
-- Cordialement, Thierry ;-)
Comment faire une copie de tableau, mais sans instancié l'original.
Je m'explique,
voici un morceau de mon code,
ARM[1][2]=ARM[1][1];
ARM[1][3]=ARM[1][1];
ARM[1][4]=ARM[1][1];
ARM[1][1] contient un tableau.
en modifiant une valeur :
ARM[1][2][0][1]=2;
je modifie non seulement ARM[1][2][0][1] ,mais aussi ARM[1][1][0][1]
et ARM[1][3][0][1] et ARM[1][4][0][1]
puisqu'au lieu de copier le tableau, il ne copie vraissemblablement
que le pointeur.
Y a t-il moyen de copier le tableau et non le pointeur ?
Le moyen béton pour copier un tableau :
var a = [1,2,3];
var b = a.concat();
"b" peut alors être modifié sans conséquence pour "a".
Toutefois, attention au piège classique :
var a = [ [1,2,3], [4,5,6], [7,8,9] ];
var b = a.concat();
Alors, "b[1] = [0,2];" ne modifiera pas "a", mais :
var c = b[1]; // "c" vaut alors [4,5,6]
c[1] = 99; // "c" vaut alors [4, 99, 6]
...mais "a" vaut alors : [ [1,2,3], [4,99,6], [7,8,9] ];
Il faut donc faire très attention ;
ce qui est dit ici pour les Array est également vrai pour tout objet
Javascript.
Pour fonctionner, voici la duplication de "a" :
var b = [];
for (var i=0; i < a.length; i++) {
b[i] = a[i].concat();
}
Comment faire une copie de tableau, mais sans instancié l'original. Je m'explique, voici un morceau de mon code, ARM[1][2]=ARM[1][1]; ARM[1][3]=ARM[1][1]; ARM[1][4]=ARM[1][1];
ARM[1][1] contient un tableau. en modifiant une valeur : ARM[1][2][0][1]=2;
je modifie non seulement ARM[1][2][0][1] ,mais aussi ARM[1][1][0][1] et ARM[1][3][0][1] et ARM[1][4][0][1] puisqu'au lieu de copier le tableau, il ne copie vraissemblablement que le pointeur.
Y a t-il moyen de copier le tableau et non le pointeur ?
Le moyen béton pour copier un tableau :
var a = [1,2,3]; var b = a.concat();
"b" peut alors être modifié sans conséquence pour "a".
Toutefois, attention au piège classique :
var a = [ [1,2,3], [4,5,6], [7,8,9] ]; var b = a.concat();
Alors, "b[1] = [0,2];" ne modifiera pas "a", mais :
var c = b[1]; // "c" vaut alors [4,5,6]
c[1] = 99; // "c" vaut alors [4, 99, 6]
...mais "a" vaut alors : [ [1,2,3], [4,99,6], [7,8,9] ];
Il faut donc faire très attention ; ce qui est dit ici pour les Array est également vrai pour tout objet Javascript.
Pour fonctionner, voici la duplication de "a" :
var b = []; for (var i=0; i < a.length; i++) { b[i] = a[i].concat(); }
-- Cordialement, Thierry ;-)
unbewusst.sein
Cenekemoi wrote:
Pour fonctionner, voici la duplication de "a" :
var b = []; for (var i=0; i < a.length; i++) { b[i] = a[i].concat(); }
le mieux est de mettre ça dans une function clone : Array.prototype.clone=function(a){...} -- Artaban de Médée
Cenekemoi <thierry@no.spam> wrote:
Pour fonctionner, voici la duplication de "a" :
var b = [];
for (var i=0; i < a.length; i++) {
b[i] = a[i].concat();
}
le mieux est de mettre ça dans une function clone :
Array.prototype.clone=function(a){...}
--
Artaban de Médée