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 に答える