1

I have an array of objects from some api call. Each of these objects have a key named id. I want to change this id to post_id for each object in the array The first key in each object is id, so I have accessed index 0 in the code below.

Thanks in advance.

function changePostId(receivedData) {
  receivedData.forEach(obj => {
    var keys = Object.keys(obj);
    var key = keys[0].replace(/^id/, "post_id");
    tmp[key] = obj[keys[0]];  
  });
}
2
  • it is obj not temp. Commented Mar 31, 2019 at 10:25
  • Yes I have changed that Commented Mar 31, 2019 at 10:26

4 Answers 4

4

You can use map() and Spread Operator. Return the object with rest properties and post_id equal to id of the object.

let arr = [
  {id:0,other:"elm 1"},
  {id:1,other:"elm 2"},
  {id:2,other:"elm 3"},
]
let res = arr.map(({id,...rest}) => ({post_id:id,...rest}));

console.log(res);

Using delete

If you want to modify the original data you can use delete

let arr = [
  {id:0,other:"elm 1"},
  {id:1,other:"elm 2"},
  {id:2,other:"elm 3"},
]
arr.forEach(item => {
  item.post_id = item.id;
  delete item.id;
})

console.log(arr);

Sign up to request clarification or add additional context in comments.

Comments

1

You are really making things too complicated. You don't have to work with Object.keys, just access .id:

for(const obj of receivedData) {
  obj.post_id = obj.id;
  delete obj.id;
}

Comments

0

access the id key from the object and assign it to new key (post_id) and then delete the post_id.

receivedData.forEach(obj => {
  obj.post_id = obj.id;
  delete obj.id;
})

Comments

0

Updating the keys array won't update the object itself.

What you need to do is:

  1. create property post_id and assign the obj.id value
  2. delete the obj.id property
function changePostId(receivedData) {
  receivedData.forEach(obj => {
    obj.post_id = obj.id;
    delete obj.id;
  });
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.