Estoy fusionando datos de dos matrices de objetos en función de una URL y una url de propiedad común y estoy usando el operador de distribución para agregar todas las propiedades en la matriz final.
El problema es que si el value de la propiedad común no tiene el mismo nombre key , agregará "dos veces" esa propiedad, aparte de cambiar el nombre de la propiedad o agregar las propiedades una por una, ¿hay alguna manera de excluir esa propiedad usando el operador de distribución? .
const data1 = [{ url: 'google.com', private: 'no' },{ url: 'duckduckgo.com', private: 'yes' }] const data2 = [{ URL: 'google.com', many: true, other: true, properties: true, dont: true, want: true, to: true, add: true, onebyone: true, }] const res = data2.map(obj => { const otherData = data1.find(({ url }) => url === obj.URL) return { ...obj, ...otherData } }) console.log(res) .as-console-wrapper { max-height: 100% !important; top: 0; } El resultado esperado sería eliminar la propiedad de URL 'duplicada' y tener solo la url: google.com
Como señaló OP en los comentarios,
¿podría usar mi ejemplo y proporcionar una respuesta por favor?
A continuación encontrará un ejemplo de trabajo. Creo que se explica por sí mismo; sin embargo, si tiene alguna pregunta, publique y explicará según sea necesario.
const data1 = [{ url: 'google.com', private: 'no' },{ url: 'duckduckgo.com', private: 'yes' }] const data2 = [{ URL: 'google.com', many: true, other: true, properties: true, dont: true, want: true, to: true, add: true, onebyone: true, }] const res = data2.map(({ URL, ...rest }) => { const otherData = data1.find(({ url }) => url === URL) return { ...rest, ...otherData } }) console.log(res) .as-console-wrapper { max-height: 100% !important; top: 0; } NOTA: En lugar de obj , desestructuramos y accedemos a URL y rest . Luego, al completar, simplemente omitimos la URL y mantenemos solo el rest . Eso es todo.
Bueno, ¿por qué no eliminas el campo URL del resultado?
const res = data2.map(obj => { const otherData = data1.find(({ url }) => url === obj.URL) const result = { ...obj, ...otherData }; delete result.URL; return result; })