【发布时间】:2020-02-15 11:59:56
【问题描述】:
有没有办法为 Object.assign 实现自定义行为 - 特别是我希望合并而不是覆盖数组类型属性值 - 实现它的最简单方法是什么?
例子:
默认行为:
Object.assign({a:[1]}, {a:[2]}).a // [2]
而我想要的结果是[1,2]。
【问题讨论】:
-
你想要的是深度合并。我个人会为此使用 deepmerge 或 lodash 包。
-
@DillanWilding 谢谢你,我正在学习 es6 - 试图远离任何自定义库 - 但感谢你的建议。我对 Object.assign 感到 99% 的满意——它可以很好地深度合并对象,唯一的一点是它处理数组的方式。
-
AFAIK 深度合并完全替换了一个数组
-
It deep merges object just fine不,它没有,它执行浅合并。 -
我很确定
Object.assign无法自定义它的合并方式,因此您必须手动迭代键并测试类型
标签: javascript ecmascript-6 javascript-objects