2015-05-12 16 views
5

Esiste un modo per utilizzare _.omit sulle proprietà dell'oggetto nidificato?Oggetto: omissione profonda

voglio che questo accada:

schema = { 
    firstName: { 
    type: String 
    }, 
    secret: { 
    type: String, 
    optional: true, 
    private: true 
    } 
}; 

schema = _.nestedOmit(schema, 'private'); 

console.log(schema); 
// Should Log 
// { 
// firstName: { 
//  type: String 
// }, 
// secret: { 
//  type: String, 
//  optional: true 
// } 
// } 

_.nestedOmit, ovviamente, non esiste e solo _.omit non influisce proprietà nidificate, ma dovrebbe essere chiaro quello che sto cercando.

Inoltre non deve essere sottolineato, ma nella mia esperienza spesso rende solo le cose più brevi e più chiare.

+0

Sarà la nidificazione essere arbitraria o solo di un livello? – thefourtheye

+0

sarà arbitrario. – zimt28

risposta

7

È possibile creare un mixin nestedOmit che attraversi l'oggetto per rimuovere la chiave indesiderata. Qualcosa di simile

_.mixin({ 
    nestedOmit: function(obj, iteratee, context) { 
     // basic _.omit on the current object 
     var r = _.omit(obj, iteratee, context); 

     //transform the children objects 
     _.each(r, function(val, key) { 
      if (typeof(val) === "object") 
       r[key] = _.nestedOmit(val, iteratee, context); 
     }); 

     return r; 
    } 
}); 

e una demo http://jsfiddle.net/nikoshr/fez3eyw8/1/

Problemi correlati