1

JQuery の $.inArray 関数に問題があります (indexOf も試しました)

私のコード:

var branches = circles[i].branches;
var counter = 0;
for (var j = 0; j < branches.length; j++) {

   var circle_branch = branches[j];
   var index = $.inArray( circle_branch, activeBranchSettings);
   if (index == -1)counter++;                   
}
if(counter == 0) circles[i].setMap(map);

そのため、Google Maps API を使用しており、マーカーを切り替えるいくつかのカテゴリ (ブランチ) を含むコントロール パネルがあります。各円 (マーカー) は複数のブランチを持つことができ、それらの ID は各円に添付されます。そのため、ブランチをループして、他の配列 (activeBranchSettings) でその ID を見つけたいと考えています。一致するものがないたびに、カウンターを増やします。最終的にカウンターが 0 の場合は、円をオンに切り替えます。したがって、これは、どのマーカーを表示すべきでなく、どのマーカーを表示すべきかを示しています。

それがそれを解決する完璧な方法であるかどうかにかかわらず、問題は

  var index = $.inArray( circle_branch, activeBranchSettings);

毎回-1を返します!値は配列のその時点にあり、「circle_branch」を .toString() で文字列に変換しようとしましたが、まだ変更はありません。何かアイデアはありますか?

4

2 に答える 2

1

これらのテストケースはうまく機能しています。したがって、データ型(typeof(variable))の比較は、問題を見つけるためのステップになる可能性があります

<script type="text/javascript">
    var arr = new Array('a', 'b', 'c', 'd');
    var look = new Array('d', 'b');

    for(var i=0; i<arr.length; i++)
    alert($.inArray( arr[i], look));
</script>
于 2013-01-09T01:00:50.733 に答える
0

jQueryのドキュメントによると、inArrayの構文は次のとおりです。

jQuery.inArray( value, array [, fromIndex ] )

手段valueは最初に来るべきであり、array2番目に来るべきです。あなたの例からは明確ではありませんactiveBranchSettingsが、それは配列または検索可能な値ですか?

于 2013-01-09T01:00:13.560 に答える