在我的Angular应用程序中,有一个数组,它是多边形坐标的引用。例如:
[[-1,0], [0,1], [1,0], [0,-1], [-1,0]]
重要的部分在于第一个和最后一个点被重复,并实际上引用了同一个2个长度的数组。这是我使用的插件的结果。然而,有时候数组将以这样的方式创建,即使第一个和最后一个点具有相同的值,但不是同一个引用。
在我的Angular应用程序的某个特定点上,我需要创建一个新的多边形,其坐标与原始多边形相同,只是翻转过来。我的第一次尝试是这样的:
然而,在第一个和最后一个坐标引用相同的情况下,我最终得到了其中一个点被反转两次的结果。
我的理解是
[[-1,0], [0,1], [1,0], [0,-1], [-1,0]]
重要的部分在于第一个和最后一个点被重复,并实际上引用了同一个2个长度的数组。这是我使用的插件的结果。然而,有时候数组将以这样的方式创建,即使第一个和最后一个点具有相同的值,但不是同一个引用。
在我的Angular应用程序的某个特定点上,我需要创建一个新的多边形,其坐标与原始多边形相同,只是翻转过来。我的第一次尝试是这样的:
var newCoords = angular.copy(polygon.coordinates);
for (var i = 0; i < newCoords.length; i++) {
newCoords[i].reverse();
}
然而,在第一个和最后一个坐标引用相同的情况下,我最终得到了其中一个点被反转两次的结果。
我的理解是
angular.copy()
会创建所传递内容的深拷贝,因此不应该出现这种问题。显然这是错误的,那么原因是什么呢?有没有一种真正深度复制坐标数组的方法来消除奇怪的引用配对?目前,我已经通过在reverse()
之前添加另一个angular.copy(newCoords[i])
来解决这个问题。
。但是当我将那段代码*完全*复制到我的应用程序中时,它会输出
false true true`。 - Will Durney