Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-使用来自同一对象的另一个值更新对象属性_Javascript_Json_Javascript Objects - Fatal编程技术网

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 返回克隆 } }
至少向我们展示一些您尝试/试图解决问题的代码。