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