2016-03-22 55 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网站并查明了这一点;) –

相关问题