2011-09-26 139 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是用於數組,而不是用於對象。