$.inArray是jQuery提供的一個數組方法,它用來檢查一個指定值在數組中是否存在,返回它第一次出現的索引值。
但是,在判斷JSON數組是否包含某個值的時候,使用$.inArray卻會出現一些問題。因為JSON數組的數據結構長這樣:
[ {"name": "Alice", "age": 20}, {"name": "Bob", "age": 25}, {"name": "Charlie", "age": 30} ]
而$.inArray方法會使用全等符號(===)來進行值的比較,而JSON對象在比較時只能比較它們是否引用了同一個對象。所以,如果直接使用$.inArray方法,判斷JSON數組中是否包含某個對象時,很可能會出現誤判。
因此,正確的使用方法是將JSON對象轉換為字符串,再進行判斷:
var jsonArray = [ {"name": "Alice", "age": 20}, {"name": "Bob", "age": 25}, {"name": "Charlie", "age": 30} ]; var jsonString = JSON.stringify({"name": "Alice", "age": 20}); if ($.inArray(jsonString, jsonArray) !== -1) { console.log("json數組包含該對象!"); }
在這里,我們使用JSON.stringify方法將JSON對象轉換為字符串,再使用$.inArray方法對比是否存在于JSON數組中,最后輸出是否包含該對象的信息。