2016-03-22 61 views
1

基本上,如果在candidates_ignore數組中找到候選id,則應將它們添加到拒絕列表中,否則它們將被添加到包含列表中jQuery告訴我什麼是數組時,它不是

除了id 33之外的所有候選人都在列表中。但由於某些原因ID爲33的一個被列入不拒絕

看到這個screenshot

正如你可以在控制檯中看到,33是不是忽略列表,這樣應該包括在內。但無論出於何種原因,即使他處於無視列表中,23也包括在內?

代碼:

  if($.inArray(cand.id, candidates_ignore)) { 

       $results_rejected.append(output); 
      } 
      else { 

       $results_included.append(output); 
      } 

的完整代碼:

http://pastebin.com/mDQksz5r

回答

1

從jQuery的網站:

的$ .inArray()方法類似於JavaScript的原生.indexOf( )方法,因爲它在找不到匹配項時返回-1。如果數組中的第一個元素與值匹配,則$ .inArray()返回0.

因爲JavaScript將0視爲大致等於false(即0 == false,但爲0!== false),所以要檢查數組中存在值,您需要檢查它是否等於(或大於)-1。

值之間的比較是嚴格的。下面將返回-1(未找到),因爲一些被搜索的字符串數組:

if($.inArray(cand.id, candidates_ignore)<0) { 

    $results_rejected.append(output); 
} 
else { 

    $results_included.append(output); 
} 

https://api.jquery.com/jQuery.inArray/

+0

哦,上帝......我無法相信這是這麼簡單。我以爲$ .inArray也返回了一個bool – Ben

+0

@BenShepherd我。經過很多麻煩,我檢查了jquery網站並查明瞭這一點;) –

相關問題