Tengo debajo del tipo de objeto
sampleObject = {name : 'John' , age : 34 }Quiero actualizar el valor de edad en función de la siguiente matriz de valor de objeto:
sampleArrayOfObject = [{name:'John',age:20},{name:'Mathew',age:23},{name:'Mohammed',age:20}]La salida final que quiero es
updatedOject = {name:'John',age:20}const sampleObject = {name : 'John', age : 34 } const sampleArrayOfObject = [{name:'John',age:20}] const updatedOject = {...sampleObject, age: sampleArrayOfObject[0].age}No estoy exactamente seguro de cómo quieres que se haga la operación, pero aquí tienes una de las opciones:
function update(obj, objs) { return { ...obj, age: objs.find(v => v.name === obj.name)?.age ?? obj.age, }; } let updatedOject = update(sampleObject, sampleArrayOfObject);Aquí está el patio de recreo para esta opción, y esto es lo que obtienes cuando haces clic en "Ejecutar":
{ "name": "John", "age": 20 }Aquí está la misma opción pero con las tipificaciones adecuadas:
type Person = { name: string; age: number } function update(obj: Person, objs: Person[]): Person { return { ...obj, age: objs.find(v => v.name === obj.name)?.age ?? obj.age, }; };Y este es el mismo código pero con genéricos (diría un enfoque preferido, pero no lo dé por sentado):
function update<T extends { name: string; age: number }>(obj: T, objs: T[]): T { return { ...obj, age: objs.find(v => v.name === obj.name)?.age ?? obj.age, }; };