lodash - project/transform object into key value array

sambomartin picture sambomartin · Aug 19, 2015 · Viewed 43.1k times · Source

I'm about to use forOwn to iterate through an object's properties and create an array manually and can't helping thinking there's a oneliner already available to do it.

{ 
  prop1 : "value",
  prop2: { sub:1}
}

to:

[ 
   {key: "prop1", value: "value"},
   {key: "prop2", value: {sub:1}}
]

Thanks

Answer

Ori Drori picture Ori Drori · Aug 19, 2015

You can use lodash's _.map() with shorthand property names:

const obj = { 
  prop1 : "value",
  prop2: { sub:1}
};

const result = _.map(obj, (value, prop) => ({ prop, value }));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.2/lodash.min.js"></script>

Or you can do it using Object#entries with Array.map() and array destructuring:

const obj = { 
  prop1 : "value",
  prop2: { sub:1}
};

const result = Object.entries(obj).map(([prop, value]) => ({ prop, value }));

console.log(result);