Search code examples
javascriptlodash

Lodash pickAs - pick properties from object into new one under different keys


Is there any way how to pick property from object into new object under different key?

E.g.:

// pseudo
let a = {prop1: 'a', prop2: 'b', prop3: 'c'}
_.pickAs(a, {prop1: 'first', prop3: 'second'}
// {first: 'a', second: 'c'}

Solution

  • You can use Array.reduce() with Object.entries() to create a pickAs() method:

    const a = {prop1: 'a', prop2: 'b', prop3: 'c'}
    
    const pickAs = (obj, props) => 
      Object.entries(obj)
      .reduce((r, [k, v]) => {
        if(k in props) r[props[k]] = v;
      
        return r;
      }, {});
      
    const result = pickAs(a, {prop1: 'first', prop3: 'second'});
    console.log(result) // {first: 'a', second: 'c'}