【问题标题】:jQuery telling me something is in an array when it isn't [duplicate]jQuery告诉我某些东西不在数组中[重复]
【发布时间】:2016-07-09 12:12:37
【问题描述】:

基本上,如果在 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

【问题讨论】:

    标签: javascript jquery arrays


    【解决方案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/

    【讨论】:

    • 天哪...我不敢相信它这么简单。我以为 $.inArray 返回了一个布尔值
    • @BenShepherd 我也是。经过很多麻烦后,我检查了 jquery 网站并发现 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2014-05-12
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多