Comment puis-je supprimer les objets de javascript tableau associatif?
Supposons que j'ai ce code:
var myArray = new Object();
myArray["firstname"] = "Bob";
myArray["lastname"] = "Smith";
myArray["age"] = 25;
Maintenant, si je voulais supprimer "nom"?....est-il un équivalent de
myArray["lastname"].remove()
?
(J'ai besoin de l'élément disparu parce que le nombre d'éléments est important et je tiens à garder les choses propres.)
- Un conseil: ne pas obtenir des tableaux et des cartes confus. Certaines langues, comme php, avoir un objet unique pour les deux. Si vous avez utilisé le bon type ici (new Object()) que vous l'avez nommé myArray, c'est juste une question de normes pour une langue.
- N'oubliez pas que le JavaScript est de type moins et tout est un objet. Voir Saul réponse ci-dessous.
- pour être précis, JS a des types, mais dans un dynamique et faible façon. Par exemple, alors que ses variables sont en effet sans type, leurs valeurs ne sont pas. C'est le dynamique partie. Faible indique que activités entre les différents types de valeur ne sont pas strictement définies et s'appuient sur les coulisses de la conversion, par exemple
"Test" + {};
est parfaitement valide JS déclaration.
Vous devez vous connecter pour publier un commentaire.
Utiliser la fonction "supprimer" clé en Javascript.
EDIT:
Dans certains moteur JavaScript, le mot clé delete pourrait nuire à la performance car il permet d'annuler la compilation /JIT optimisation.
http://www.html5rocks.com/en/tutorials/speed/v8/
http://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/
delete myArray[0]
. Voir stackoverflow.com/a/9973592/426379 et la Suppression d'éléments de tableaulength
propriété d'un objet de Tableau reste inchangé.myArray
était vraiment utilisé comme un tableau mais ne l'est pas (myArray
est malheureux nom), c'est un objet. Donc dans ce casdelete
est OK. Notez que même si il a été créé commenew Array()
et utilisé en tant que tableau associatif, il serait toujours OK. L'avertissement est toujours quelque chose d'être conscient de si un seul est réel en utilisant des matrices de bien.Tous les objets en JavaScript sont mis en œuvre comme les tables de hashage/tableaux associatifs. Ainsi, les éléments suivants sont considérés:
Et, comme déjà indiqué, vous "retirer" une propriété d'un objet via le
delete
mot-clé, vous pouvez utiliser de deux manières:Espère que la petite info en aide...
myObj['some;property']
fonctionne, maismyObj.some;property
ne serait pas (pour des raisons évidentes). Aussi, il peut ne pas être évident que vous pouvez utiliser une variable dans le support de la notation, c'est à direvar x = 'SomeProperty'; alert(myObj[x])
Aucune des réponses précédentes tenir compte du fait que le Javascript n'a pas de tableaux associatifs pour commencer - il n'y a pas de
array
type en tant que tel, voirtypeof
.Ce que Javascript a, sont des instances d'objet avec des propriétés dynamiques. Lorsque les propriétés sont confondus avec les éléments d'un Tableau instance de l'objet puis de Mauvaises Choses™ sont tenus de se produire:
Problème
Solution
D'avoir un universel fonction de suppression qui n'a pas de sauter sur vous, utilisez:
Array
s en JS sont des objets, essayeztypeof new Array();
outypeof []
à vérifier.Array
est tout simplement un certain type d'un objet et non pas un "bête". En JS, les objets sont distingués par leur constructeur nom et le prototype de la chaîne, voir Prototype de base de la programmation.delete
opérateur a en ce qui concerneArray
en offrant une simple fonction polymorphe.Qui ne supprime supprime l'objet, mais conserve encore la longueur du tableau même.
Pour supprimer ce que vous devez faire quelque chose comme:
Alors que l'on a accepté la réponse est correcte, il manque l'explication pourquoi il fonctionne.
Tout d'abord, votre code doit refléter le fait que c'est PAS un tableau:
Noter que tous les objets (y compris
Array
s) peut être utilisé de cette façon. Cependant, ne vous attendez pas à la norme JS fonctions de tableau (pop, push,...) afin de travailler sur des objets!Comme l'a dit à accepté de répondre, vous pouvez ensuite utiliser
delete
pour supprimer les entrées à partir d'objets:Vous devez décider quel chemin vous voulez emprunter, soit utiliser des objets (tableaux associatifs /dictionnaires) ou utiliser des tableaux (des cartes). Ne jamais mélanger les deux.
Utiliser la méthode
splice
pour complètement supprimer un élément à partir d'un tableau d'objets:Vous utilisez un Objet, vous n'êtes pas avoir un tableau associatif pour commencer.
Avec un tableau associatif, ajout et suppression d'éléments qui va comme ceci:
Comme d'autres réponses ont indiqué, ce que vous utilisez n'est pas un tableau Javascript, mais un objet Javascript qui fonctionne presque comme un tableau associatif dans d'autres langues, sauf que toutes les clés sont converties en chaînes. La nouvelle Carte magasins de clés, de leur type d'origine.
Si vous aviez un tableau et non pas un objet, vous pouvez utiliser le tableau de .filtre fonction, pour revenir une nouvelle pile, sans l'élément que vous souhaitez supprimer:
Si vous avez une ancienne version de navigateur et de jQuery, jQuery a une
$.grep
méthode qui fonctionne de la même façon:Il est une manière élégante de Airbnb Guide de Style pour ce faire (ES7):
Droit d'auteur: https://codeburst.io/use-es2015-object-rest-operator-to-omit-properties-38a3ecffe90
Si, pour quelque raison que ce soit la touche suppr ne fonctionne pas (comme il n'était pas de travail pour
moi )
Vous pouvez épissure, puis à filtrer les valeurs non définies
Ne pas essayer et de la chaîne d'eux depuis épissure retourne éléments supprimés;
Vous pouvez supprimer une entrée de votre carte par l'assigner explicitement à "indéfini". Comme dans votre cas:
Son très simple si vous avez underscore.js de la dépendance dans votre projet -
Nous pouvons l'utiliser comme une fonction trop. Angulaire déclenche une erreur si elle est utilisée comme un prototype. Merci @HarpyWar. Il m'a aidé à résoudre un problème.
À l'aide de la
"delete"
mot-clé, il va supprimer l'élément de tableau de tableau en javascript.Par exemple,
Envisager la suite de déclarations.
Dernière ligne de code va supprimer l'élément du tableau qui est clé est "statut" dans le tableau.
Sans boucle/itère nous obtenons le même résultat