How to merge two objects that are generated by a mapping process?

Viewed 64

This is what my original array looks like

[                                                                                             
  {
    _id: new ObjectId("12934193c51a231b0165425a"),
    userid: '62921df1c14a2eea0efa9399',
    timestamp: 1653817696599,
  },
  {
    _id: new ObjectId("11934193c51a231b0165425a"),
    userid: '62921df1c14a2eea0efa9399',
    timestamp: 1653817696600,
  }
]

I use this code to convert the timestamp

const newNotifications = notifications.map((element, index) => {
  return {
    element: element,
    new_timestamp: new Date(element.timestamp),
  };
});

And this is the result I have

[
  {
    "element": {
      "_id": "12934193c51a231b0165425a",
      "userid": "62921df1c14a2eea0efa9399",
      "timestamp": 1653817696599,
    },
    "timestamp": "2022-05-29T09:48:16.599Z",
  },
]

I try to make it look like this

[                                                                                             
  {
    _id: new ObjectId("12934193c51a231b0165425a"),
    userid: '62921df1c14a2eea0efa9399',
    timestamp: 1653817696599,
    new_timestamp: '2022-05-29T09:48:16.599Z',
  },
  {
    _id: new ObjectId("11934193c51a231b0165425a"),
    userid: '62921df1c14a2eea0efa9399',
    timestamp: 1653817696600,
    new_timestamp: '2022-05-29T09:48:16.599Z',
  },
]

I would like the timestamp to be part of each newly created object and remove the element property generated by the current mapping.

1 Answers

You can bind the new_timestamp into the existing object nd then return the whole object :

const notifications = [                            
  {
    _id: "12934193c51a231b0165425a",
    userid: '62921df1c14a2eea0efa9399',
    timestamp: 1653817696599,
  },
  {
    _id: "11934193c51a231b0165425a",
    userid: '62921df1c14a2eea0efa9399',
    timestamp: 1653817696600,
  }
];

const newNotifications = notifications.map((element) => {
    element['new_timestamp'] = new Date(element.timestamp).toString()
  return element;
});

console.log(newNotifications);

Related