How to convert object containing Objects into array of objects

JavascriptLodash

Javascript Problem Overview


This is my Object

var data = {
    a:{"0": "1"},
    b:{"1": "2"},
    c:{"2": "3"},
    d:{"3": "4"}
};

This is the output that I expect

data = [ 
    {"0": "1"},
    {"1": "2"},
    {"2": "3"},
    {"3": "4"}
]

Javascript Solutions


Solution 1 - Javascript

This works for me

var newArrayDataOfOjbect = Object.values(data)

In additional if you have key - value object try:

const objOfObjs = {
   "one": {"id": 3},
   "two": {"id": 4},
};

const arrayOfObj = Object.entries(objOfObjs).map((e) => ( { [e[0]]: e[1] } ));

will return:

[  {    "one": {      "id": 3    }  },  {    "two": {      "id": 4    }  }]

Solution 2 - Javascript

var data = {
    a:{"0": "1"},
    b:{"1": "2"},
    c:{"2": "3"},
    d:{"3": "4"}
};

var myData = Object.keys(data).map(key => {
	return data[key];
})

This works for me

Solution 3 - Javascript

The accepted answer doesn't take into account the OP wanted to get rid of the keys. This returns only the objects, not their parent key.

Object.entries(ObjOfObjs).map(e => e[1]) outputs:

[   {"0": "1"},  {"1": "2"},  {"2": "3"},  {"3": "4"}]

Solution 4 - Javascript

You would have to give a name to each value in the object.

Once you fix the first object, then you can do it using push.

var data = {
    1: {"0": "1"},
    2: {"1": "2"},
    3 : {"2": "3"},
    4: {"3": "4"}
};

var ar = [];
for(item in data){
    ar.push(data[item]);
 }

console.log(ar);

http://jsfiddle.net/nhmaggiej/uobrfke6/

Solution 5 - Javascript

this is simple and will do in an immutable way so that your main data not touched but you can create a new mappedData as per your requirement and create a new array.

let data = {
  a: { "0": "1" },
  b: { "1": "2" },
  c: { "2": "3" },
  d: { "3": "4" }
};

const mappedDataArray = [];

for (const key in data) {
  const mappedData = {
    ...data[key]
  };
  mappedDataArray.push(mappedData);
}

console.log(mappedDataArray);
console.log(data);

Solution 6 - Javascript

You can easily do this by using Object.values() function

var data = {
    a:{"0": "1"},
    b:{"1": "2"},
    c:{"2": "3"},
    d:{"3": "4"}
};

console.log(Object.values(data))

Solution 7 - Javascript

var array = [];
for(var item in data){
    // this condition is required to prevent moving forward to prototype chain
    if(data.hasOwnProperty(item)){
        array.push(data[item]);
    } 
}

Solution 8 - Javascript

I get what you want ! Here is your solution,

var dataObject=[{name:'SrNo',type:'number'}];

And to access or store the array use

dataObject[0].srno=1;
dataObject[0].srno=2;

Hope this is what you needed.

Solution 9 - Javascript

This worked for me. And it seems to be well supported.

toArray(obj_obj) {
	return Object.keys(obj_obj).map(i => obj_obj[i]);
}

https://medium.com/chrisburgin/javascript-converting-an-object-to-an-array-94b030a1604c

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNick DivView Question on Stackoverflow
Solution 1 - JavascriptThierryView Answer on Stackoverflow
Solution 2 - JavascriptShuweiView Answer on Stackoverflow
Solution 3 - JavascriptMatt WeberView Answer on Stackoverflow
Solution 4 - JavascriptmagsView Answer on Stackoverflow
Solution 5 - JavascriptJunaid KhanView Answer on Stackoverflow
Solution 6 - JavascriptbismaView Answer on Stackoverflow
Solution 7 - JavascriptfrogattoView Answer on Stackoverflow
Solution 8 - JavascriptAshitosh birajdarView Answer on Stackoverflow
Solution 9 - JavascriptOmarView Answer on Stackoverflow