Reputation: 65143
As shown in the image, I just do inArray on an array, looking for a node. and $previously_selected_node and the item at index 37 in $shapes are the same object.... so... why isn't it working?
EDIT: I found another way to search after one of the aswerers postedd his answer:
var result = -1;
jQuery.each(shapes, function(key, value){
if (value.id == shape.id){
result = key;
}
});
return result;
apparently, part of my problem is that I can't return in the middle of a loop. (I was returning the instant a match was found, which was causing some issues.)
Upvotes: 3
Views: 1544
Reputation: 26730
You're doing it the wrong way round. It's actually $.inArray(value, array)
.
And as others already stated: inArray is for arrays, not for objects.
Upvotes: 3
Reputation: 887453
Your object is not an array.
$.inArray
only work on array-like objects with a length
and a set of properties named 0
through length - 1.
You need to search your non-array manually.
For example, you could use a for
/ in
loop to loop through all properties that actually exist and see if any of them match your object:
for (var key in $shapes) {
if ($shapes[key] === yourObject) {
//Match!
}
}
Upvotes: 3