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 ?

15voto

akshay_sushir Points 31
const arr = [
  {id: 1, name: 'user1', test: 'abc'},
  {id: 2, name: 'user2', test: 'xyz'},
];

const newArr = arr.map(({test, ...rest}) => {
  return rest;
});

console.log(newArr);
//  [{id: 1, name: 'User1'},  {id: 2, name: 'User2'}]

La fonction que nous passons à la méthode Array.map est invoquée pour chaque élément du tableau.

Nous déstructurons la propriété test de chaque objet et utilisons l'opérateur rest (...) pour obtenir le reste des propriétés de l'objet.

Nous retournons le reste des propriétés de l'objet à partir de la fonction, en excluant pratiquement la propriété test.

const arr = [
  {id: 1, name: 'Tom', test: 'abc'},
  {id: 2, name: 'Bob', test: 'xyz'},
];

arr.forEach(object => {
  delete object['test'];
});

console.log(arr);
//  [{id: 1, name: 'Tom'}, {id: 2, name: 'Bob'}]

10voto

maplemap Points 111

A mon avis, c'est la variante la plus simple.

array.map(({good}) => ({good}))

8voto

Bergi Points 104242

Une solution utilisant des prototypes n'est possible que si vos objets sont similaires :

function Cons(g) { this.good = g; }
Cons.prototype.bad = "something common";
var array = [new Cons("something 1"), new Cons("something 2"), …];

Mais alors c'est simple (et O(1) ) :

delete Cons.prototype.bad;

7voto

Sylvain Points 264
var array = [{"bad": "something", "good":"something"},{"bad":"something", "good":"something"}];

const cleanArray = array.map(item=>{
  delete item.bad
  return item
})
console.log(cleanArray)

3voto

Idan Points 85

Le chemin le plus court en ES6 :

array.forEach(e => {delete e.someKey});

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