首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >immer.js合并嵌套对象

immer.js合并嵌套对象
EN

Stack Overflow用户
提问于 2020-03-22 09:12:47
回答 2查看 1.4K关注 0票数 1

我想使用immer.js合并嵌套对象

合并两个嵌套对象总是很困难的。

我想知道是否有任何图书馆能提供以下内容。

代码语言:javascript
复制
state = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'foo1',
      lv3_2: 'foo2',
    },
    lv2_2: {
      lv3_2: 'foo2'
    }
  },
  lv1_2: {
    lv2_1: 'foo'
  }
}



lv1_1 = {
  lv2_1: {
    lv3_1: 'bar'
  }
}

将lv1_1与状态合并,我希望得到以下输出。

代码语言:javascript
复制
state = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'bar',
      lv3_2: 'foo2',
    },
    lv2_2: {
      lv3_2: 'foo2'
    }
  },
  lv1_2: {
    lv2_1: 'foo'
  }

}

我尝试了immerse.js,但是下面的代码draft.lv1_1 = {...draft.lv1_1, ...lv1_1}似乎给出了

代码语言:javascript
复制
state = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'bar'
    }
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-22 09:36:39

我想知道在任何一个库中是否可能出现以下情况。

你可以试试lodash.merge

代码语言:javascript
复制
const a = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'foo1',
      lv3_2: 'foo2'
    },
    lv2_2: {
      lv3_2: 'foo2'
    }
  },
  lv1_2: {
    lv2_1: 'foo'
  }
};

const b = {
  lv1_1: {
    lv2_1: {
      lv3_1: 'bar'
    }
  }
};
console.log(_.merge(a, b));
票数 2
EN

Stack Overflow用户

发布于 2022-07-14 04:56:54

试一试:

代码语言:javascript
复制
import produce, { current } from 'immer'
import _ from 'lodash'

produce(a, (draft) => {
  _.merge(current(draft), b)
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60797579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档