Javascript-使用来自同一对象的另一个值更新对象属性
我的目标如下:Javascript-使用来自同一对象的另一个值更新对象属性,javascript,json,javascript-objects,Javascript,Json,Javascript Objects,我的目标如下: { id: 1, name: 'jdoe', currentDayHours: null, totalHours: [{ task: 'cleaning', hours: 10}, { task: 'reading', hours: 2 }]} 我正在尝试创建一个函数,该函数将根据传递给该函数的任务参数更新currentDayHours。例如,如果将清理传递给函数,则对象的预期结果应该是: { id: 1, name: 'jdoe', currentDayHours: 10,
{ id: 1, name: 'jdoe', currentDayHours: null, totalHours: [{ task: 'cleaning', hours: 10}, { task: 'reading', hours: 2 }]}
我正在尝试创建一个函数,该函数将根据传递给该函数的任务参数更新currentDayHours。例如,如果将清理传递给函数,则对象的预期结果应该是:
{ id: 1, name: 'jdoe', currentDayHours: 10, totalHours: [{ task: 'cleaning', hours: 10}, { task: 'reading', hours: 2 }]}
我对javascript还是新手,但我认为我应该使用foreach和filter,但不知道如何将两者结合使用。任何指导都将不胜感激 直接访问属性就足够了。用于查找对象 数据={id:1,名称:'jdoe',currentDayHours:null,totalHours:[{task:'cleaning',hours:10},{task:'reading',hours:2}]} const updateHours=data,key=>{ data.currentDayHours=data.totalHours.find{task}=>task==key | |【】.hours 返回数据 } console.logupdateHoursdata,'cleaning'您可以使用Array.find在totalHours数组中查找任务对象,然后使用该对象的小时数分配给currentDayHours 如果要在位修改对象,可以执行以下操作: 函数updateCurrentDayHoursobj,taskName{ const task=obj.totalHours.findt=>t.task===taskName 如果task obj.currentDayHours=task.hours } 如果要返回克隆对象,可以使用一些库(如lodash)提供的deepClone函数。为了简单起见,我在这里使用JSON.parse和JSON.stringify 函数updateCurrentDayHoursobj,taskName{ const task=obj.totalHours.findt=>t.task===taskName 如果任务{ const clone=JSON.parseJSON.stringifyobj clone.currentDayHours=task.hours 返回克隆 } }
至少向我们展示一些您尝试/试图解决问题的代码。