0

我正在过滤一个数组,该数组在 Google 地图(API V3)上形成一组标记:http: //testdae.dialanexchange.com/testmap.aspx

对于分时度假度假村和具有残疾人通道和允许携带宠物之一或两者的私人财产,这一切都可以正常工作。在所有这些情况下,我输入的调试警报显示 1642,这是用于标记的原始数组中的点数。

但是,当您选择全部以及禁用访问和允许宠物中的一个或两者时,在正确显示结果后,取消选择其中一个复选框会导致警报显示这些过滤器已影响原始数组,因为它指示了总计在过滤器部分的底部。它只能通过重新加载页面来重置。

我认为问题出在 filterProperties() 函数中,但我看不到。

是不是因为我一直盯着它,谷歌搜索并尝试各种方法让它工作了一天多,所以我在这里遗漏了什么?我认为 $.grep 不应该影响原始数组。

4

2 回答 2

3

来自jQuery$.grep()文档:

查找满足过滤器函数的数组元素。原始数组不受影响。

于 2012-07-14T13:45:17.963 回答
0

答案结果是,不是 $.grep 有问题,而是在 Javascript 中将一个对象分配给另一个对象会导致两个对象都被更改(如果有的话),因为它们是通过引用同一个对象来链接的。解决方案是从原始对象克隆一个新对象,从而保持原始对象的完整性。参考资料是:-

1)在 JavaScript 中深度克隆对象的最有效方法是什么?

2) http://od-eon.com/blogs/bogdan/javascript-assignment-reference-vs-object-cloning/

于 2012-07-14T14:25:18.467 回答