How to convert object containing Objects into array of objects
JavascriptLodashJavascript 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);
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