如何将包含对象的对象转换为对象数组

这是我的目标

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

这是我期望的输出

data = [
{"0": "1"},
{"1": "2"},
{"2": "3"},
{"3": "4"}
]
123342 次浏览

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/

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]);
}
}

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.

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
}
}
]
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

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

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"}
]

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);

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))

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);

1

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))