1604 votes

Comment supprimer une clé d'un objet JavaScript ?

Disons que nous avons un objet avec ce format :

var thisIsObject= {
   'Cow' : 'Moo',
   'Cat' : 'Meow',
   'Dog' : 'Bark'
};

Je voulais faire une fonction qui supprime par touche :

removeFromObjectByKey('Cow');

4 votes

Voulez-vous que la fonction soit une fonction jQuery ou qu'est-ce que cela a à voir avec jQuery ?

23 votes

Il s'agit en fait d'un objet JavaScript, les tableaux associatifs n'existent pas en JavaScript.

2 votes

Oui, c'est juste une confusion de terminologie je pense, c'est-à-dire que c'est Javascript et non Jquery, et c'est un objet et non un tableau (l'OP peut venir d'autres langages avec des tableaux associatifs).

2715voto

jessegavin Points 20854

Le site delete permet de supprimer une propriété d'un objet.

Les exemples suivants font tous la même chose.

// Example 1
var key = "Cow";
delete thisIsObject[key]; 

// Example 2
delete thisIsObject["Cow"];

// Example 3
delete thisIsObject.Cow;

Si vous êtes intéressé, lisez Comprendre la suppression pour une explication approfondie.

51 votes

Si vous bouclez sur les clés d'un objet et les supprimez si elles correspondent à une certaine valeur, cela affecte-t-il l'index de la clé pendant que vous bouclez dessus ?

14 votes

Il me semble qu'en parcourant cet objet avec for (var key in object) correspondra toujours à cette clé et essayer d'utiliser object[key] dans la boucle provoquera une erreur. (ou retournera undefined )

9 votes

Attention, il se peut qu'IE8 lève une exception lors de l'utilisation de l'option delete dans certaines circonstances. Voir stackoverflow.com/questions/1073414/

243voto

Mohammed Safeer Points 1533

Si vous utilisez Underscore.js ou Lodash, il existe une fonction "omit" qui permet de le faire.
http://underscorejs.org/#omit

var thisIsObject= {
    'Cow' : 'Moo',
    'Cat' : 'Meow',
    'Dog' : 'Bark'
};
_.omit(thisIsObject,'Cow'); //It will return a new object

=> {'Cat' : 'Meow', 'Dog' : 'Bark'}  //result

Si vous voulez modifier l'objet courant, assignez l'objet de retour à l'objet courant.

thisIsObject = _.omit(thisIsObject,'Cow');

Avec du JavaScript pur, utilisez :

delete thisIsObject['Cow'];

Une autre option avec du pur JavaScript.

thisIsObject = Object.keys(thisIsObject).filter(key =>
    key !== 'cow').reduce((obj, key) =>
    {
        obj[key] = thisIsObject[key];
        return obj;
    }, {}
);

141voto

ANIL MIRGE Points 41

C'est aussi simple que ça :

delete object.keyname;

ou

delete object["keyname"];

2 votes

Si la clé est un numéro généré, et que nous n'en savons rien, nous pouvons faire ce qui suit : const unknownKey = 100500; delete object[`${unknownKey}`];

5voto

Andrei Karpushonak Points 2364

En Node.JS, vous pouvez utiliser touche-del qui supprime les clés des objets Javascript, y compris ceux qui sont imbriqués.

Exemple :

var deleteKey = require('key-del')

var originalObject = {
    one: 1,
    two: 2,
    three: {
      nestedOne: 3,
      nestedTwo: 4
    }
}

var result = deleteKey(originalObject, ['one', 'nestedOne'])

console.log(result)
// {two: 2, three: {nestedTwo: 4}}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X