Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

257
Vistas
Actualizar matriz anidada ES6, JavaScript

Tengo la siguiente matriz de objetos:

 [{ idChatPublic: "1", message: "hello", chatLike: [{ id: "1", idChatPublic: "1" }] }]

Lo que quiero es simplemente agregar un nuevo objeto en la matriz chatLike. Aquí está mi intento, pero no parece estar funcionando. ¿Qué pasa con este fragmento de código?

 async function sendLike(messageId: string) { const newLike = { idChatPublic: messageId, } mutateMessages( (data) => { console.log(data) // returns the array I want to update data.map((message) => { if (message.idChatPublic === messageId) { console.log(message.chatLike) // returns the array inside the object I want to update return { ...message, chatLike: [...message.chatLike, newLike] } } else { return message } }) } ) }
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

El método map() crea una nueva matriz con los resultados de llamar a una función proporcionada en cada elemento de la matriz de llamadas.

Probablemente, debe crear const con una nueva matriz y devolverla:

 const newData = data.map((message) => { if (message.idChatPublic === messageId) { console.log(message.chatLike) // returns the array inside the object I want to update return { ...message, chatLike: [...message.chatLike, newLike] } } else { return message } }); return newData;
about 4 years ago · Juan Pablo Isaza Denunciar

0

No necesitas map() . Creo que puedes hacerlo así:

 async function sendLike(messageId: string) { const newLike = { idChatPublic: messageId, }; mutateMessages((data) => { data.forEach((message) => { if (message.idChatPublic === messageId) { message.chatLike.push(newLike); } } }); }

Repita la matriz de objetos con forEach() y, si la identificación coincide, puede actualizar la matriz chatLike con push() para agregar un nuevo objeto newLike .

about 4 years ago · Juan Pablo Isaza Denunciar

0

const data = [ { idChatPublic: "1", message: "hello", chatLike: [ { id: "1", idChatPublic: "1", }, ], }, ]; function updateChatLike() { return data.map((d) => { return { ...d, chatLike: [ ...d.chatLike, { id: 2, idChatPublic: "2", }, ], }; }); } console.log(JSON.stringify(updateChatLike(), null, 4));

He usado JSON.stringify() para registrar el objeto anidado completo

Producción

 [ { "idChatPublic": "1", "message": "hello", "chatLike": [ { "id": "1", "idChatPublic": "1" }, { "id": 2, "idChatPublic": "2" } ] } ]
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda