Javascript 动态对象替换属性,而不是添加到属性中

Javascript 动态对象替换属性,而不是添加到属性中,javascript,javascript-objects,Javascript,Javascript Objects,所以,我想做一个每日计划表,你需要填写特定日期的任务。任务存储在状态对象中。根据年、月、日、任务类型、主题和任务名称,每个任务都放置在各自的动态属性中。 下面是我目前正在做的排序工作 export const addTask = (tasks, fields) => { // tasks are directly from the state // fields are gathered from a form, then put as an argument for this funct

所以,我想做一个每日计划表,你需要填写特定日期的任务。任务存储在状态对象中。根据年、月、日、任务类型、主题和任务名称,每个任务都放置在各自的动态属性中。 下面是我目前正在做的排序工作

export const addTask = (tasks, fields) => {
// tasks are directly from the state
// fields are gathered from a form, then put as an argument for this function

  console.log("pre add", tasks);
  fields.subject = capitalizeFirstLetter(fields.subject);
  fields.name = capitalizeFirstLetter(fields.name);

  tasks[fields.date[0]] = {};
  tasks[fields.date[0]][fields.date[1]] = {};
  tasks[fields.date[0]][fields.date[1]][fields.date[2]] = {};
  tasks[fields.date[0]][fields.date[1]][fields.date[2]][fields.type] = {};
  tasks[fields.date[0]][fields.date[1]][fields.date[2]][fields.type][fields.subject] = {};
  tasks[fields.date[0]][fields.date[1]][fields.date[2]][fields.type][fields.subject][fields.name] = {};
  tasks[fields.date[0]][fields.date[1]][fields.date[2]][fields.type][fields.subject][fields.name] = fields.details;

  console.log("post add", tasks);

  return tasks;
};
这是我的状态:

const state = {
  tasks: {// this is what I put in the addTask function},
  dates: {
    monthCounter: 0,
    targetDate: {},
  },
};
这也是我调用函数的方式:

state.tasks = addTask(state.tasks, fields);

每当我添加另一个任务时,最后一个任务都会被删除/替换。即使两个任务的主题相同,但名称不同,第一个任务也会被删除。

这是什么:
tasks[fields.date[0]][fields.date[1]][fields.date[2]][fields.type][fields.subject][fields.name]=fields.details。我认为你需要重新考虑你正在使用的结构。这就是我组织它的方式,结果是
year:{month:{day:{type:{subject:{name:[detailsArray]}设计不好。祝你维修顺利。如何有效地过滤特定类型。另外,主题可能是唯一的,所以没有意义。如果你一年中有两项任务,那么第二项任务将在一年中休息。Do
tasks[fields.date[0]]=tasks[fields.date[0]].|{}相反。我会试试,但即使它起作用,我也可能会改变它