I have a javascript object like the one below with several fields and arrays and arrays within arrays. I'm only interested only in non-junk fields and wanted to remove all the junk properties from the objects. How can I do that using lodash?
I can do that by using delete
, but I don't want to do that because that list is huge and I don't want to keep changing my code to write a delete every time a new junk property is added to my object.
{
state: 'New York',
country: 'usa',
counties : [['washington','DC'],'Long Island',['New','Jersey']],
city : 'Manhattan',
zip: '43543545',
JunkOne : ['3453454','45345','45345'],
JunkTwo: '5454545',
JunkThree: {adc:'4545',vdfd:'45345'}
}
use either delete operator to delete specific properties
delete data.JunkOne;
or use object.assign to select specific properties
var a = Object.assign({}, { counties: data.counties});
EDIT:
Doing it lodash way would be
var a = _.omit(data, ['JunkOne']);
or
var a = _.pick(data, ['counties']);
You can use lodash.pick()
to create an object with only the requested keys. For example:
var city = {
state: 'New York',
country: 'usa',
counties : [['washington','DC'],'Long Island',['New','Jersey']],
city : 'Manhattan',
zip: '43543545',
JunkOne : ['3453454','45345','45345'],
JunkTwo: '5454545',
JunkThree: {adc:'4545',vdfd:'45345'}
}
var lodash = require('lodash');
city = lodash.pick(city, ['state', 'country', 'counties','city','zip']);
City now should have all the useful data, and none of the junk.
You can use _.pick
to create a new object with only a specific set of properties from your original object:
var objectWithNoJunk = _.pick(myObject, ['state', 'country', 'counties', 'city', 'zip']);
@aspillers answer is the same as mine but waaay shorter/better. Go with that.
var listOfGoodProps = [
"city",
"county",
...
];
Object.keys(yourObj).reduce(function(acc, key) {
if (listOfGoodProps.indexOf(key) !== -1)
acc[key] = yourObj[key];
return acc;
}, {});
No lodash needed, straight up ES 5.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With