我在这里过滤了一个在Google Map(API V3)上形成一组标记的数组:http://testdae.dialanexchange.com/testmap.aspx。
对于任何一个或两个残疾人通道和允许宠物的分时度假村和私人物业,这一切都能正确组合。在所有这些情况下,我输入的调试警报显示1642,这是用于标记的原始数组中的点数。
但是,当您选择“全部”和“禁用访问”和“允许宠物”中的一个或两个时,在正确显示结果后,取消选中其中一个复选框会导致警报显示这些过滤器已影响原始阵列,因为它表示过滤器部分底部的总数。它只能通过重新加载页面来重置。
我认为问题出在filterProperties()函数中,但我无法看到它。
我有什么东西在这里失踪因为我一直在盯着它,谷歌搜索和尝试各种各样的东西让它工作超过一天了吗?我以为$ .grep不应该影响原来的数组。
答案 0 :(得分:3)
来自$.grep()
的{{3}}:
查找满足过滤函数的数组元素。的的 原始数组不受影响。
答案 1 :(得分:0)
答案结果证明它不是$ .grep有错,但是在Javascript中将对象分配给另一个对象会导致两个对象被更改,如果有的话,因为它们是通过引用链接的同一个对象。解决方案是从原始对象克隆新对象,从而保持原始对象的完整性。参考文献是: -
1)What is the most efficient way to deep clone an object in JavaScript?
2)http://od-eon.com/blogs/bogdan/javascript-assignment-reference-vs-object-cloning/