将javascript对象作为副本分配给新对象

时间:2016-11-05 15:17:56

标签: node.js object clone lodash javascript-objects

我在javascript中有这个对象obj.arr的数组。 我将它分配给了一个新对象。

var obj_arr_new = obj.arr;

问题在于,当我修改obj_arr_new时,obj.arr也会被修改。我不要那个。如何让obj_arr_new成为obj.arr的副本,当我修改obj_arr_new时,obj.arr未受影响?

我正在使用node.js v6。我愿意使用任何node.js模块。有人告诉我lodash可以做这个工作。使用lodash的答案会有所帮助。

2 个答案:

答案 0 :(得分:4)

为此目的,Lodash确实有一个//Does type checking in a separate process, so webpack don't need to wait. new ForkCheckerPlugin(), new ExtractTextPlugin("styles/[name].css"), //Varies the distribution of the ids to get the smallest id length for often used ids. new webpack.optimize.OccurenceOrderPlugin(true), //Copy files and directories in webpack. Copies project static assets. new CopyWebpackPlugin([{ from: root('assets'), to: root('build/assets') }]), new webpack.optimize.DedupePlugin(), new webpack.optimize.UglifyJsPlugin({sourceMap: true}), new webpack.ContextReplacementPlugin(/moment[\/\\]locale$/, /de|it/)

_.cloneDeep(value)

它将递归克隆"数组,数组缓冲区,布尔值,日期对象,映射,数字,对象对象,正则表达式,集合,字符串,符号和类型化数组"因此,修改克隆的位不会影响原始位,反之亦然。

Documentation

答案 1 :(得分:2)

我倾向于使用以下方式创建副本:

var copiedObject = JSON.parse(JSON.stringify(originalObject));

这仅适用于JSONable对象,但是如果您正在处理字符串,数组等那么它就很好了,即如果你有作为你正在复制的对象的子节点的函数的话。