Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript对象属性在分配时更新_Javascript_Arrays_Javascript Objects - Fatal编程技术网

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

我创建了一个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],[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包得到答案-