Object 尝试使用lodash删除嵌套对象

Object 尝试使用lodash删除嵌套对象,object,redux,lodash,Object,Redux,Lodash,我不确定我做错了什么,但我无法确定。我正在尝试从redux中的对象中删除项目。尝试使用“删除”,但它会破坏应用程序。我从lodash得到了一个真实的响应,它已经被删除了,但当我在控制台上显示相同的对象时 let newState = {...state}; console.log('before', newState); console.log(_.unset(newState, [`year2020.month${action.month}.days.day${action.day}`]));

我不确定我做错了什么,但我无法确定。我正在尝试从redux中的对象中删除项目。尝试使用“删除”,但它会破坏应用程序。我从lodash得到了一个真实的响应,它已经被删除了,但当我在控制台上显示相同的对象时

let newState = {...state};
console.log('before', newState);
console.log(_.unset(newState, [`year2020.month${action.month}.days.day${action.day}`]));
console.log('after',newState);
return newState;
样本状态:

let state = {
  year2020: {
    month3: {
      num: 0,
      name: "January",
      length: 31,
      starts: 3,
      days: {
        day1: { mood: 1 },
        day2: { mood: 2 },
        day3: { mood: 3 },
        day11: { mood: 4 }
      }
    }
  }
};

因为您的路径是一个字符串(一个由点分隔的字符串),所以不要用数组包装

注意:使用
\uuu.cloneDeep()
而不是浅克隆(扩散),因为您会改变对象的更深层次:

const state={“year2020”:{“month3”:{“num”:0,“name”:“一月”,“长度”:31,“开始”:3,“天”:{“day1”:{“mood”:1},“day2”:{“mood”:2},“day3”:{“mood”:3},“day11”:{“mood”:4}};
const newState=u.cloneDeep(state);
const action={有效负载:{月:3,日:1};
_.unset(newState,`year2020.month${action.payload.month}.days.day${action.payload.day}`);
console.log('after',newState)

不客气,我很高兴你学到了一些东西:)