Reputation: 5628
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"}
]
Upvotes: 108
Views: 160921
Reputation: 402
Easy Hack
var data = {
a:{"0": "1"},
b:{"1": "2"},
c:{"2": "3"},
d:{"3": "4"}
};
data = Object.values(data).map((item)=>item)
console.log(data)
Upvotes: 1
Reputation: 20088
We can use Object default methods (Object.assign(), Object.values()) to convert Object of Object to array in the following way
const ObjValue = {
a:{"0": "1"},
b:{"1": "2"},
c:{"2": "3"},
d:{"3": "4"}
}
const ObjtoArray = (obj) => Object.assign([], Object.values(obj))
console.log(ObjtoArray(ObjValue))
Upvotes: 0
Reputation: 41
Finally, It works for me to convert from object to array of objects when you get object value from
const snapshortObject = snapshot.val(); // And they look like this are stored value.
let snapshortObject = {
a: {
message: "Hiiii",
senderId: "tQusPaBhoJXcu2ezlsDxQMUTLCq1",
timestamp: "Wed Jun 8 18:16:18 2022"
},
b: {
message: "Hiiii",
senderId: "tQusPaBhoJXcu2ezlsDxQMUTLCq1",
timestamp: "Wed Jun 8 18:16:18 2022"
},
c: {
message: "Hello 👋👋👋👋",
senderId: "tQusPaBhoJXcu2ezlsDxQMUTLCq1",
timestamp: "Wed Jun 8 18:16:50 2022"
},
d: {
message: "Hello 👋👋👋👋",
senderId: "tQusPaBhoJXcu2ezlsDxQMUTLCq1",
timestamp: "Wed Jun 8 18:16:50 2022"
}
};
const mappedDataArray = [];
slno=1
for (const key in snapshortObject) {
const mappedData = {
...snapshortObject[key],
slno:slno++
};
mappedDataArray.push(mappedData);
}
console.log(mappedDataArray);
Upvotes: 1
Reputation: 1676
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
}
}
]
Upvotes: 142
Reputation: 749
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))
Upvotes: 8
Reputation: 59
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);
Upvotes: 2
Reputation: 2868
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"}
]
Upvotes: 11
Reputation: 3040
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
Upvotes: 0
Reputation: 791
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
Upvotes: 56
Reputation: 470
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.
Upvotes: 0
Reputation: 29285
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]);
}
}
Upvotes: 1
Reputation: 630
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/
Upvotes: 5