|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Étudiant Inscription : juillet 2005 Messages : 267 ![]() |
Bonjour,
Dans la doc, push() retourne la taille du tableau et n'est pas censé modifier le tableau "parent". Voici le code : Code :
Le second console.log() affiche : 200 200 Pourquoi le tableau obj.data est modifié ? Merci d'avance pour votre aide !
__________________
Blog : http://alacoche.geekos.fr/ Donnez votre voix pour 2012 : http://www.votelibre.fr/ |
||
|
00
|
|
|
#2 |
![]() ![]() Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur Inscription : mars 2002 Messages : 30 047 ![]() |
push est supposé ajouter un element dans le tableau ... pas retourner sa taille
__________________
Ma page Developpez Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts) Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir... Votre post est résolu ? Alors n'oubliez pas le Tag ![]() ![]() réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2005 Messages : 267 ![]() |
Il ajoute un élément, modifie la taille du tableau et retourne la nouvelle taille (je viens de retester) :
==> Retourne 2... Mais c'est pas le problème Mon code est inutile mais c'est pour l'exemple! Je copie obj.data dans result.data. Je modifie la valeur de result.data[i]. Ce qui entraine une modification sur obj.data[i] .. :s
__________________
Blog : http://alacoche.geekos.fr/ Donnez votre voix pour 2012 : http://www.votelibre.fr/ |
|
00
|
|
|
#4 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2005 Messages : 267 ![]() |
Le problème vient de la structure de mes objets !
Le push() doit copier l'adresse de data[i] et non le contenu... Si je passe tout en tableau, ca se comporte normalement... Comment faire ca du coup :s Et ne proposez pas de tout passer en tableau mdr
__________________
Blog : http://alacoche.geekos.fr/ Donnez votre voix pour 2012 : http://www.votelibre.fr/ |
|
00
|
|
|
#5 | ||
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 871 ![]() |
ou plus globalement : Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2005 Messages : 267 ![]() |
Merci pour ta réponse.
Sauf que m'oblige à connaitre la structure de data[i]... Voici ma proposition: Code :
result.data.push(JSON.parse(JSON.stringify(obj.data[i])));
__________________
Blog : http://alacoche.geekos.fr/ Donnez votre voix pour 2012 : http://www.votelibre.fr/ |
|
00
|
|
|
#7 |
|
Membre Expert
![]() Boris Dessysans emploi Inscription : décembre 2010 Messages : 871 ![]() |
Je pense que ma seconde solution est meilleure alors, bien que je ne connaisse pas le code natif de JSON.stringify, je suposse qu'il fait une boucle et que pour chaque élément il l'ajoute à un string.
Ensuite JSON.parse fait probablement l'inverse, tu as donc 2 boucle plus des convertion en string, alors que ma solution effectue une simple boucle. Après évidement si tu as une structure encore plus complexe avec des objets contenus dans des objets, tu peux faire une fonction de parcours/copie qui vérifiera pour chaque élément s'il s'agit d'un objet et dans ce cas faire un appel récursif. |
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Étudiant Inscription : juillet 2005 Messages : 267 ![]() |
Oui, tu a raison.
J'utilise ceci pour un plugin jQuery. Du coup c'est pas l'aspect principale de la chose mais ça pourra faire l'objet d'une amélioration... Merci pour ton aide
__________________
Blog : http://alacoche.geekos.fr/ Donnez votre voix pour 2012 : http://www.votelibre.fr/ |
|
00
|
Copyright © 2000-2012 - www.developpez.com