我在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的答案会有所帮助。
答案 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)
它将递归克隆"数组,数组缓冲区,布尔值,日期对象,映射,数字,对象对象,正则表达式,集合,字符串,符号和类型化数组"因此,修改克隆的位不会影响原始位,反之亦然。
答案 1 :(得分:2)
我倾向于使用以下方式创建副本:
var copiedObject = JSON.parse(JSON.stringify(originalObject));
这仅适用于JSONable对象,但是如果您正在处理字符串,数组等那么它就很好了,即如果你有作为你正在复制的对象的子节点的函数的话。