jQuery告诉我什么是数组,当它不是

时间:2016-03-22 14:32:50

标签: javascript jquery arrays

基本上,如果在candidate_ignore数组中找到候选ID,那么它们应该被添加到被拒绝的列表中, 否则他们将被添加到包含列表

除了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 个答案:

答案 0 :(得分:1)

来自jQuery网站:

$ .inArray()方法类似于JavaScript的原生.indexOf()方法,因为它在找不到匹配项时返回-1。如果数组中的第一个元素与value匹配,则$ .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/