jQuery:jQuery.inArray()为什么不工作?

时间:2011-09-26 14:49:03

标签: javascript jquery arrays

enter image description here

如图所示,我只是在阵列上进行inArray,寻找一个节点。 $ previous_selected_node和$ shapes中索引37的项目是同一个对象....所以...为什么它不起作用?

编辑: 在其中一位aswerers发布了他的答案之后,我找到了另一种搜索方式:

var result = -1;
jQuery.each(shapes, function(key, value){
    if (value.id == shape.id){
        result = key;
    }
});
return result;
显然,我的一部分问题是我无法在循环中间返回。 (当我发现一场比赛时,我回来了,这引起了一些问题。)

2 个答案:

答案 0 :(得分:3)

您的对象不是数组 $.inArray仅适用于类似数组的对象,其中包含length和一组名为0 length - 1 的属性。< / p>

您需要手动搜索非阵列 例如,您可以使用for / in循环来遍历实际存在的所有属性,并查看它们是否与您的对象匹配:

for (var key in $shapes) {
    if ($shapes[key] === yourObject) {
        //Match!
    }
}

答案 1 :(得分:3)

你这样做是错误的。它实际上是$.inArray(value, array)

正如其他人已经说过的那样:inArray用于数组,而不用于对象。