Tengo dos matrices de objetos. ¿Cómo puedo tomar la propiedad de una matriz y anular la propiedad 'valor' de la otra matriz? Actualmente estoy haciendo esto, pero parece bastante raro hacerlo de esta manera. La matriz original 'streamingTiles' contiene otras propiedades, por lo que tengo el '...'
El objetivo es reemplazar el 'valor' en streamingTiles con el valor de 'recuentos' de refTiles según el UID coincidente por objeto
const streamingTiles = [ {uid: 57, value: 10, ...}, {uid: 30, value: 51, ...}, {uid: 14, value: 24, ...}, {uid: 47, value: 73, ...}, ] const refTiles = [ {uid: 14, counts: 10}, {uid: 57, counts: 51}, {uid: 30, counts: 24}, {uid: 47, counts: 73}, ] // replace value in streamingTiles with 'count' value from refTiles const tiles = streamingTiles.map((item) => { var refObj = refTiles.find((obj) => { return obj.uid === item.uid; }); return { ...item, ...{ value: refObj["counts"] } }; });PREGUNTA ACTUALIZADA
Si cambié el nombre de 'recuentos' para que sea 'valor', ¿se aplicaría la misma solución de reemplazar el 'valor' en la matriz streamingTiles con el 'valor' de refTiles basado en el UID coincidente?
const streamingTiles = [ {uid: 57, value: 10, ...}, {uid: 30, value: 51, ...}, {uid: 14, value: 24, ...}, {uid: 47, value: 73, ...}, ] const refTiles = [ {uid: 14, value: 10}, {uid: 57, value: 51}, {uid: 30, value: 24}, {uid: 47, value: 73}, ]Procese los refTiles en un objeto para evitar llamadas de find para cada elemento.
const streamingTiles = [ { uid: 57, value: 10 }, { uid: 30, value: 51 }, { uid: 14, value: 24 }, { uid: 47, value: 73 }, ]; const refTiles = [ { uid: 14, counts: 10 }, { uid: 57, counts: 51 }, { uid: 30, counts: 24 }, { uid: 47, counts: 73 }, ]; const refs = refTiles.reduce( (acc, curr) => ((acc[curr.uid] = curr.counts), acc), {} ); const titles = streamingTiles.map((item) => ({ ...item, value: refs[item.uid] ?? item.value, })); console.log(titles);Simplemente puede eliminar la destrucción innecesaria de objetos:
const tiles = streamingTiles.map((item) => { var refObj = refTiles.find((obj) => { return obj.uid === item.uid; }); return { ...item, value: refObj["counts"]}; });