如图所示,我只是在阵列上进行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;
显然,我的一部分问题是我无法在循环中间返回。 (当我发现一场比赛时,我回来了,这引起了一些问题。)
答案 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用于数组,而不用于对象。