Bonjour bonjour,
Je veux simplement supprimer un objet en js, voici un bout du code qui vous fera comprendre :

var client = session.username;
delete(users.client);

(précision, je suis sur nodejs pour ceux qui seraient intrigués par session)
Le problème, c'est que lorsque j'entre manulement la valeur de client :

delete(users.emix);

pour exemple, cela fonctionne, mais en prennant "emix" dynamiquement cela ne fonctionne pas..
Les détails supplémentaires sont innutiles, l'objet users contient bien un objet users et lorsque j'effectue :

console.log(delete(users.client)); // return true!

J'ai vérifié derrière qu'il soit bien supprimé par un console.log mais l'objet "emix" reste..
Merci pour votre aide,

4 réponses


mxmaxime
Auteur
Réponse acceptée

Problème résolu, il fallait utiliser la syntaxe object[var]

Salut,

Ce n'est pas très clair, voire pas du tout. Tu veux supprimer quoi ??

l'opérateur JS delete doit normalement faire l'affaire.

Après, ta notation n'est pas optimale, car delete s'utilise ainsi (me semble-t-il):
delete expression;

et non
delete(expression);

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/L_op%C3%A9rateur_delete/

mxmaxime
Auteur

"Je veux simplement supprimer un objet en js", je ne vois pas comment être plus claire.. Le problème provient de la récupération dynamique du nom. J'ai précisé le problème dans tous les détails sauf la nature de l'objet qui ne compte pas.
J'ai précisé que lorsque je faisais manuellement (sans apport de variable dynamique) sa fonctionne...

mxmaxime
Auteur

Si tu préfères, tiens deux screen qui expliquent le problème :
http://gyazo.com/cfef82237a3b16c4717d8ca9563b953a => ça marche
http://gyazo.com/113188bb26f173e056605c4ba3d8a1a5 => mon cas, problème ^^