2014-04-07 11 views
26

Gibt es eine "intelligente" Unterstreichung Weg alle Schlüssel/Wert-Paare aus einem Array von Objekt zu entfernen?Underscore: Entfernen Sie alle Schlüssel/Wert-Paare aus einem Array von Objekt

z.B. Ich habe folgende Array:

var arr = [ 
     { q: "Lorem ipsum dolor sit.", c: false }, 
     { q: "Provident perferendis veniam similique!", c: false }, 
     { q: "Assumenda, commodi blanditiis deserunt?", c: true }, 
     { q: "Iusto, dolores ea iste.", c: false }, 
    ]; 

und ich mag folgendes erhalten:

var newArr = [ 
     { q: "Lorem ipsum dolor sit." }, 
     { q: "Provident perferendis veniam similique!" }, 
     { q: "Assumenda, commodi blanditiis deserunt?" }, 
     { q: "Iusto, dolores ea iste." }, 
    ]; 

ich bekommen kann diese Arbeit mit dem JS unten, aber nicht wirklich zufrieden mit meinen Lösungen:

for (var i = 0; i < arr.length; i++) { 
    delete arr[i].c; 
}; 

Alle Vorschläge sehr geschätzt.

Antwort

46

Sie können map und omit in Verbindung verwenden, um bestimmte Eigenschaften auszuschließen, wie folgt aus:

var newArr = _.map(arr, function(o) { return _.omit(o, 'c'); }); 

Oder map und pick es werden nur bestimmte Eigenschaften, wie folgt aus:

var newArr = _.map(arr, function(o) { return _.pick(o, 'q'); }); 
+0

mich schlagen, um es ! @ User789 Sie können _.pick auch verwenden, wenn Sie den gegenteiligen Effekt haben wollen: 'var newArr = _.map (arr, funktion (o) {return _.pick (o, 'q');});' – Pete

+3

@ User789 Wenn Sie nur ein Array wollen, können Sie auch die Methode pluck verwenden: 'var newArr = _.pluck (arr, 'q');' – Pete

+0

@ mister_rampage Ja, das ist auch ein guter Punkt. –

Verwandte Themen