217 votes

Suppression de la propriété pour tous les objets du tableau

Je veux enlever le bad de chaque objet du tableau. Existe-t-il un meilleur moyen de le faire que d'utiliser un fichier for et le supprimer de chaque objet ?

var array = [{"bad": "something", "good":"something"},{"bad":"something", "good":"something"},...];

for (var i = 0, len = array.length; i < len; i++) {
  delete array[i].bad;
}

Il semble juste qu'il devrait y avoir un moyen d'utiliser prototype ou quelque chose comme ça. Je ne sais pas. Des idées ?

376voto

piotr_cz Points 3171

Avec ES6, vous pouvez déconstruire chaque objet pour en créer un nouveau sans attributs nommés :

const newArray = array.map(({dropAttr1, dropAttr2, ...keepAttrs}) => keepAttrs)

178voto

dystroy Points 145126

Les seuls autres moyens sont cosmétiques et sont en fait des boucles.

Par exemple :

array.forEach(function(v){ delete v.bad });

Notes :

  • si vous voulez être compatible avec IE8, il vous faudrait une cale pour chaque . Comme vous mentionnez le prototype, prototype.js également a une cale .
  • delete est l'un des pires "tueurs d'optimisation" . Son utilisation casse souvent les performances de vos applications. Vous ne pouvez pas l'éviter si vous voulez vraiment supprimer une propriété mais vous pouvez souvent soit mettre la propriété à undefined ou simplement construire de nouveaux objets sans la propriété.

34voto

ex0b1t Points 379

Je préfère utiliser map pour supprimer la propriété et ensuite retourner le nouvel élément du tableau.

array.map(function(item) { 
    delete item.bad; 
    return item; 
});

21voto

Maifee Ul Asad Points 1912

Vous pouvez suivre ce qui suit, plus lisible, ne pas s'attendre à ce que la clé ne soit pas trouvée :

data.map((datum) => {
  return {
    'id':datum.id,
    'title':datum.login
  }
});

16voto

Cody Points 2224

Si vous utilisez underscore.js :

var strippedRows = _.map(rows, function (row) {
    return _.omit(row, ['bad', 'anotherbad']);
});

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