Javascript对象属性在分配时更新
我创建了一个JavaScript对象,如下所示-Javascript对象属性在分配时更新,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我创建了一个JavaScript对象,如下所示- var objtvar = {defaultPoints: [[0,0],[0,-10],[2.5, -10], [2.5, -10],[5, -10],[5,0]]} 我需要将defaultPoints属性分配给另一个数组并修改这个新数组。但是,在更新这个新数组时,对象属性也会更新 我希望对象属性不更改 代码- var objtvar = {defaultPoints: [[0,0],[0,-10],[2.5, -10], [2.5, -10
var objtvar = {defaultPoints: [[0,0],[0,-10],[2.5, -10], [2.5, -10],[5, -10],[5,0]]}
我需要将defaultPoints属性分配给另一个数组并修改这个新数组。但是,在更新这个新数组时,对象属性也会更新
我希望对象属性不更改
代码-
var objtvar = {defaultPoints: [[0,0],[0,-10],[2.5, -10], [2.5, -10],[5, -10],[5,0]]};
var flag = objtvar.defaultPoints;
flag[5][1] = 9;
这将更新标志数组和defaultPoints属性中的值。我不希望该属性得到更新
更新的解决方案-
我们可以使用@Nimrod Shory建议的jquery扩展,或者使用像这样的纯JS实现如果不想分配引用,您必须深度克隆对象。 您可以使用jQuery实现这一点:
var flag = jQuery.extend(true, {}, objtvar).defaultPoints;
var-objtvar={defaultPoints:[[0,0],[0,-10],[2.5,-10],[2.5,-10],[5,-10],[5,0]};
var flag=jQuery.extend(true,{},objtvar).defaultPoints;
标志[0][1]=3;
$('#objtvar').text('objtvar[0][1]='+JSON.stringify(objtvar.defaultPoints[0][1]);
$('#result').text('flag[0][1]='+JSON.stringify(flag[0][1])代码>
实际上,这是关于克隆数组的,问题并没有提到jQuery。解决方案是将第2行更改为:var flag=objtvar.defaultPoints.slice(0)
@TudorIlisoi这实际上是错误的,因为这是一个数组数组,而且数组是引用类型,它将更改旧对象。实际上,它需要递归。Mea CULLPATHIS创建一个对象,在该对象中数组被拆分为单个属性。已尝试从extend命令中删除属性“defaultPoints”,但问题仍然存在。原始对象在赋值时得到更新。@Manya-Edited my answer是否有Javascript等价物?我在基于节点js的量角器UI测试中使用了这段代码,我最不想做的就是包含jquery npm包得到答案-