admin管理员组

文章数量:1134248

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

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"}
]
Share Improve this question edited Nov 7, 2014 at 6:53 Nick Div asked Nov 7, 2014 at 6:47 Nick DivNick Div 5,61815 gold badges73 silver badges135 bronze badges 3
  • Then see my comment about the target structure. It's a bad output format and a pain to use in javascript. Why not just put all key/value pairs in a single object? – jfriend00 Commented Nov 7, 2014 at 6:54
  • 1 I am using a third party library in my application that needs the input in the format that i want. cant help it. – Nick Div Commented Nov 7, 2014 at 6:55
  • 2 Wow, these comments make my head hurt. How is an array of objects "a pain to use in javascript"? Granted the objects are normally all the same structure, but we use arrays of objects all the time, quite painlessly. – iGanja Commented Oct 31, 2017 at 17:07
Add a comment  | 

12 Answers 12

Reset to default 142

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

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

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

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/

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

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 

本文标签: javascriptHow to convert object containing Objects into array of objectsStack Overflow