ThexBasic ThexBasic - 1 year ago 196
Javascript Question

JS / ES6: Object to Array conversion

so I'm having this weird problem that one of my node js library's is returning some data I need in the wrong format like this:


(note that the values don't matter)
but I need to loop this array in a way, that I find my B for my A that has a certain value (in this case e.g. '2', I would need '4') and all other parts of my program are so far using arrays like this:

[{"a":"1", "b":"3", "c":"5"}, {"a":"2", "b":"4", "c":"6"}]

and it would be my preferred approach.

Also note that the amount of data in a is always the same as b and c, but itself is variable.

So what would be the "best" way to accomplish this in ES6/JS ? (before I start messing with for-loops)

I'm pretty sure this is a repost question, but couldn't find anything under my search terms. So please forgive me, I'm a bit desperate about this one.

Thanks in advance.

Answer Source

If you are looking to transform an object like


Into a array like


Something like this is the simplest way I can think of

function formatData (data) {
  return Object.keys(data).reduce((arr, key) => {
    data[key].forEach((value, i) => {
     const iObj = arr[i] || (arr[i] = {});
     iObj[key] = value;
    return arr;
  }, []);
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download