JokerMartini
JokerMartini

Reputation: 6147

javascript convert object to array of objects with key value labels

Say i have an object like this..

const obj = {
  streaming_tile_x: 608,
  streaming_tile_z: 608,
  global_total_mesh_count: 9776,
  global_total_asset_count: 17831,
  global_total_texture_count: 64055,
  global_total_entity_count: 0,
  global_total_shader_count: 9776,
}

How can i convert it to an array of objects like this...

const results = [
    { 
        name: "streaming_tile_x", 
        value: 608 
    },
    { 
        name: "streaming_tile_z", 
        value: 608 
    },
    { 
        name: "global_total_mesh_count", 
        value: 9776 
    },
    { 
        name: "global_total_asset_count", 
        value: 17831 
    },
    { 
        name: "global_total_texture_count", 
        value: 64055 
    },
    { 
        name: "global_total_entity_count", 
        value: 0 
    },
    { 
        name: "global_total_shader_count", 
        value: 9776 
    },
]

Upvotes: 1

Views: 987

Answers (4)

Maik Lowrey
Maik Lowrey

Reputation: 17566

First catch the object keys then iterate over there.

obj = {
  streaming_tile_x: 608,
  streaming_tile_z: 608,
  global_total_mesh_count: 9776,
  global_total_asset_count: 17831,
  global_total_texture_count: 64055,
  global_total_entity_count: 0,
  global_total_shader_count: 9776,
}

n = Object.keys(obj).map((o) => {
  return {
    name: o,
    value: obj[o]
  }
})

console.log('n', n);

Upvotes: 0

Markiesch
Markiesch

Reputation: 759

You can use a simple for in loop to make this new array

const obj = {
  streaming_tile_x: 608,
  streaming_tile_z: 608,
  global_total_mesh_count: 9776,
  global_total_asset_count: 17831,
  global_total_texture_count: 64055,
  global_total_entity_count: 0,
  global_total_shader_count: 9776,
}

let array = []

for (let object in obj) {
  array.push({
    name: object,
    value: obj[object]
  })
}

console.log(array)

Upvotes: 0

Huan
Huan

Reputation: 308

Object.keys(obj).map(key => ({name: key, value: obj[key]}))

Upvotes: 1

Robby Cornelissen
Robby Cornelissen

Reputation: 97152

Use Object.entries() with map() and array destructuring:

const obj = {
  streaming_tile_x: 608,
  streaming_tile_z: 608,
  global_total_mesh_count: 9776,
  global_total_asset_count: 17831,
  global_total_texture_count: 64055,
  global_total_entity_count: 0,
  global_total_shader_count: 9776,
};

const result = Object.entries(obj).map(([name, value]) => ({name, value}));

console.log(result);

Upvotes: 1

Related Questions