2014-04-07 22 views
26

Tüm anahtar/değer çiftlerini bir nesne dizisinden kaldırmanın "akıllı" altçizgi yolu var mı?Underscore: bir nesne dizisinden tüm anahtar/değer çiftlerini kaldırın

örn. Ben şu dizi var:

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 }, 
    ]; 

ve aşağıdaki almak istiyorum:

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

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

Bu aşağıda JS ile çalışan, ama benim çözümlerle gerçekten mutlu değil alabilirsiniz

Herhangi bir öneri çok takdir edildi.

cevap

46

Bunu, belirli özelliklere dışlamak için birlikte map ve omit kullanabilirsiniz:

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

Ya map ve sadece pick bu gibi belirli özellikleri yer alır:

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

Beni ona yendi ! @ User789 Ayrıca karşı efekti istiyorsanız _.pick kullanabilirsiniz: 'var newArr = _.map (arr, işlev (o) {return _.pick (o, 'q');});' – Pete

+3

@ Kullanıcı789 Ayrıca, sadece bir dizi istiyorsanız, aynı zamanda pluck yöntemini kullanabilirsiniz: 'var newArr = _.pluck (arr, 'q');' – Pete

+0

@mister_rampage Evet, bu da iyi bir nokta. –

İlgili konular