【发布时间】:2021-01-15 04:52:23
【问题描述】:
我想合并两个对象而不克隆或改变其中之一。
function merge(defaultOptions, userOptions) {
// userOptions should not be cloned or mutated but should get priority over defaultOptions
return res;
}
我正在使用 lodash,但 _merge 并没有多大帮助。由于 userOptions 可能很大,我想避免克隆它。
请注意,改变或克隆 defaultOptions 是可以的,因为它不会影响我系统的性能。
执行此操作的最佳方法是什么?
【问题讨论】:
-
你想要一个新的对象还是改变一个?
-
为什么 lodashes 合并没有多大帮助?它完全符合您的要求。它会变异
defaultOptions,这对你来说没问题。 -
@NinaScholz 我愿意改变 defaultOptions 或创建一个新选项。正如我所提到的,我不介意克隆 defaultOptions 所以无论如何都没关系。
-
@JohannesKlauß _.merge(defaultOptions, userOptions) 会克隆 userOptions,这是非常昂贵的。同时,_.merge(userOptions, defaultOptions) 会覆盖我不想要的 userOptions。
-
@gt18 你在哪里找到这些信息的?快速查看源代码并不表明源对象正在被克隆。
标签: javascript object merge lodash