Digamos que tengo un objeto y una función que toma un objeto de actualización y devuelve un nuevo objeto con el primero y el de actualización así:
const object = { id: 1, value: 'initial value' } const updateFunction = (updates) => { return { ...object, ...updates } } const updatedObject = updateFunction({ id: 2, value: 'updated value' })Usar el operador de propagación, ¿existe una manera simple de excluir la identificación de la propagación, actualizándola sabiendo que no puedo cambiar mi función de actualización para tomar múltiples argumentos?
Editar: en los comentarios, alguien sugirió una solución simple como esta:
return {...object, ...updates, id: object.id};Pero digamos que, por alguna razón, no tenemos acceso al valor de identificación del primer objeto, ¿hay alguna manera de excluir el par clave/valor de identificación de la propagación?
gracias
No recomendaría eliminar la id de updates como la respuesta de kmoser. Esto cambiará directamente el objeto que se pasa, lo que suele ser inesperado.
En cambio, puede excluir la id de una manera que no afecte las updates :
const updateFunction = (updates) => { const { id, ...rest } = updates; return { ...object, ...rest, } }Elimine la propiedad 'id' de 'actualizaciones' antes de hacer la propagación:
const updateFunction = (updates) => { delete updates['id'] return { ...object, ...updates } }Referencia: ¿Cómo elimino una propiedad de un objeto de JavaScript?