Node.js如何低内存占用合并无冲突字段的两个对象?
合并无冲突字段对象的内存高效实现方式
既然你不介意丢弃原对象,那完全不用创建新对象来完成合并——直接把其中一个对象的属性批量转移到另一个对象里就行,这种方式不会额外复制原对象的已有属性,内存效率更高。
最直接的实现就是用原生的Object.assign()方法:如果选择把对象y的属性合并到x中,只需要执行Object.assign(x, y),这样x就会直接变成包含两个对象所有属性的合并结果,全程不需要创建新的对象,完全复用了原有的x对象内存空间。
代码示例:
const x = { a: 1 } const y = { b: 2 } // 将y的属性合并到x,x直接成为合并后的对象 Object.assign(x, y) console.log(x) // { a: 1, b: 2 }
对比你之前用的扩展语法{...x, ...y},这种方式会新建一个对象,并把x和y的所有属性都复制到新对象里,相当于额外占用了两份原对象属性的内存;而Object.assign()修改原对象的方式,只需要把y的属性添加到x上,x原有的属性不需要复制,内存开销小很多。
如果更倾向于保留y作为合并后的对象,也可以反过来写Object.assign(y, x),效果是一样的。因为你提到两个对象没有字段冲突,所以不用担心属性覆盖的问题,这种方式完全适用。
内容的提问来源于stack exchange,提问作者Ahmet Yazıcı
相关产品推荐
相关产品推荐

