$.inArray是jQuery提供的一個(gè)數(shù)組方法,它用來檢查一個(gè)指定值在數(shù)組中是否存在,返回它第一次出現(xiàn)的索引值。
但是,在判斷JSON數(shù)組是否包含某個(gè)值的時(shí)候,使用$.inArray卻會(huì)出現(xiàn)一些問題。因?yàn)镴SON數(shù)組的數(shù)據(jù)結(jié)構(gòu)長(zhǎng)這樣:
[ {"name": "Alice", "age": 20}, {"name": "Bob", "age": 25}, {"name": "Charlie", "age": 30} ]
而$.inArray方法會(huì)使用全等符號(hào)(===)來進(jìn)行值的比較,而JSON對(duì)象在比較時(shí)只能比較它們是否引用了同一個(gè)對(duì)象。所以,如果直接使用$.inArray方法,判斷JSON數(shù)組中是否包含某個(gè)對(duì)象時(shí),很可能會(huì)出現(xiàn)誤判。
因此,正確的使用方法是將JSON對(duì)象轉(zhuǎn)換為字符串,再進(jìn)行判斷:
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數(shù)組包含該對(duì)象!"); }
在這里,我們使用JSON.stringify方法將JSON對(duì)象轉(zhuǎn)換為字符串,再使用$.inArray方法對(duì)比是否存在于JSON數(shù)組中,最后輸出是否包含該對(duì)象的信息。