Search code examples
javascriptarraysjavascript-objects

How to turn an object of objects to an array of objects in Javascript


What should I to turn this:

{
  "1": {"name": "John", "age": "20"},
  "2": {"name": "Sam", "age": "30"},
  "3": {"name": "Tim", "age": "40"},
  }

Into this:

[
  {"id": "1", "name": "John", "age": "20"},
  {"id": "2", "name": "Sam", "age": "30"},
  {"id": "3", "name": "Tim", "age": "40"},
]

Thank you :)


Solution

  • You can easily achieve this using Object.entries, map, and array destructuring

    const obj = {
      "1": { name: "John", age: "20" },
      "2": { name: "Sam", age: "30" },
      "3": { name: "Tim", age: "40" },
    };
    
    const result = Object.entries(obj).map(([key, value]) => {
      return { id: key, ...value };
    });
    
    console.log(result);

    using Object.keys

    const obj = {
      "1": { name: "John", age: "20" },
      "2": { name: "Sam", age: "30" },
      "3": { name: "Tim", age: "40" },
    };
    
    const result = Object.keys(obj).map((key) => {
      return { id: key, ...obj[key] };
    });
    
    console.log(result);

    using for..in loop

    const obj = {
      "1": { name: "John", age: "20" },
      "2": { name: "Sam", age: "30" },
      "3": { name: "Tim", age: "40" },
    };
    
    const result = [];
    for (let key in obj) {
      result.push({ id: key, ...obj[key] });
    }
    
    console.log(result);