Tengo este objeto con las siguientes propiedades anidadas.
{ _id: { agent_info: { name: 'Ritu', status: 'active', avatar: null } }, avg_score: 100, }Estoy tratando de deconstruirlo para que se vea así.
{ name: 'Ritu', status: 'active', avatar: null, avg_score: 100, } Intenté usar este const { _id:{...agent_info} } = user; pero la salida sigue siendo la misma y el objeto no se altera.
La desestructuración no alterará el objeto. Puede crear un nuevo objeto, pero no modificará el original.
No puede usar una sola operación de desestructuración para obtener el resultado que desea. Puedes acercarte, pero se necesitan dos pasos.
const { _id: { agent_info: { ...result } } } = original; result.avg_score = original.avg_score;Ejemplo en vivo:
const original = { _id: { agent_info: { name: 'Ritu', status: 'active', avatar: null } }, avg_score: 100, }; const { _id: { agent_info: { ...result } } } = original; result.avg_score = original.avg_score; console.log(result); Eso copia todo, desde original._id.agent_info en un nuevo objeto al que hace referencia la constante de result , luego agrega avg_score .
También puede hacerlo sin reutilizar original , tomando avg_score en la misma operación que crea el result :
const { _id: { agent_info: { ...result } }, avg_score } = original; result.avg_score = avg_score;Ejemplo en vivo:
const original = { _id: { agent_info: { name: 'Ritu', status: 'active', avatar: null } }, avg_score: 100, }; const { _id: { agent_info: { ...result } }, avg_score } = original; result.avg_score = avg_score; console.log(result); ...pero eso deja una constante avg_score por ahí (lo cual es inofensivo, pero...).
Puede lograr la desestructuración de este objeto usando algo que se llama propiedad profunda. 
const obj = { _id: { agent_info: { name: 'Ritu', status: 'active', avatar: null } }, avg_score: 100, }; const {_id:{ agent_info:{ ...res }}} = obj; res["avg_Score"] = obj.avg_score; console.log(res);Echa un vistazo a este enlace para obtener más información.