2011-09-26 72 views
3

enter image description herejQuery:为什么不jQuery.inArray()的工作?

如图所示,我只是在数组中寻找一个节点。和$ previously_selected_node和$形状中的索引37处的项目是相同的对象....所以...为什么它不工作?

编辑: 我找到了另一种方式来搜索后aswerers之一postedd他的回答:

var result = -1; 
jQuery.each(shapes, function(key, value){ 
    if (value.id == shape.id){ 
     result = key; 
    } 
}); 
return result; 

显然,我的问题的一部分,我不能在一个循环的中间返回。 (我回来时发现了一场比赛,这是造成一些问题。)

+0

'$ shapes'是否有'length'? – SLaks

+0

$ shapes.length是未定义的...所以..然后它实际上不是一个数组,即使我给它赋值如$ shapes [id] = val;所以...我如何通过搜索呢? – NullVoxPopuli

+0

通常情况下,当问题的形式是'为什么不''插入流行的库函数名称''工作?一起来 - 它被错误地使用。 '$ shapes'可能不是**数组**,对象的比较也容易出现问题。 – Orbling

回答

3

您的对象不是一个数组。 1 -
$.inArray只有通过长度上具有length阵列状物体和一组命名0性质的工作。您需要手动搜索非数组。
例如,你可以使用一个for/in循环来遍历实际存在的,看看其中是否符合您的对象的所有属性:

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

怎么样?我已经试过。每个,循环...不太确定这个对象是什么。 – NullVoxPopuli

+0

不错,我找到了一个类似的解决方案,加入到OP中 – NullVoxPopuli

3

你周围做了错误的方式。它实际上是$.inArray(value, array)

而其他人已经说过:inArray是用于数组,而不是用于对象。