tutorial - lodash vs underscore
eliminando propiedades de objetos con lodash (3)
Obtenga una lista de propiedades del model
usando _.keys()
, y use _.pick()
para extraer las propiedades de las credentials
a un nuevo objeto:
var model = {
fname:null,
lname:null
};
var credentials = {
fname:"xyz",
lname:"abc",
age:23
};
var result = _.pick(credentials, _.keys(model));
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script>
Si no desea utilizar lodash, puede usar Object.keys()
y Array.prototype.reduce()
:
var model = {
fname:null,
lname:null
};
var credentials = {
fname:"xyz",
lname:"abc",
age:23
};
var result = Object.keys(model).reduce(function(obj, key) {
obj[key] = credentials[key];
return obj;
}, {});
console.log(result);
Tengo que eliminar las propiedades de objeto no deseadas que no coinciden con mi modelo. ¿Cómo puedo lograrlo con lodash.
Mi modelo es
var model = {
fname:null,
lname:null
}
La salida de mi controlador antes de enviar al servidor será
var credentials = {
fname:"xyz",
lname:"abc",
age:23
}
si yo uso
_.extend (model, credentials)
Estoy recibiendo propiedad de edad también. Soy consciente de que puedo usar
delete credentials.age
pero qué pasa si tengo más de 10 objetos no deseados. ¿Puedo lograrlo con lodash.
Puede abordarlo desde una lista blanca o una lista negra:
// Black list
// Remove the values you don''t want
var result = _.omit(credentials, [''age'']);
// White list
// Only allow certain values
var result = _.pick(credentials, [''fname'', ''lname'']);
Si se trata de una lógica empresarial reutilizable, también puede dividirla:
// Partial out a black list version
var clean = _.partial(_.omit, _, [''age'']);
// and later
var result = clean(credentials);
Puedes hacerlo fácilmente usando _.pick:
var model = {
fname:null,
lname:null
};
var credentials = {
fname: ''abc'',
lname: ''xyz'',
age: 2
};
var result = _.pick(credentials, _.keys(model));
console.log(''result ='', result);
<script src="https://cdn.jsdelivr.net/lodash/4.16.4/lodash.min.js"></script>
Pero simplemente puedes usar JavaScript puro (especialmente si usas ES6), así:
const model = {
fname: null,
lname: null
};
const credentials = {
fname: ''abc'',
lname: ''xyz'',
age: 2
};
const newModel = {};
Object.keys(model).forEach(key => newModel[key] = credentials[key]);
console.log(''newModel ='', newModel);