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!数组中那个点的值是,我尝试使用 .toString() 将“circle_branch”转换为字符串,但仍然没有变化,有什么想法吗?

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应该排在第一位,并且array应该排在第二位。从您的示例中不太清楚activeBranchSettings它是数组还是可搜索值?

于 2013-01-09T01:00:13.560 回答