Javascript jQuery$.inArray即使已检查是否存在,仍会传递值

Javascript jQuery$.inArray即使已检查是否存在,仍会传递值,javascript,jquery,arrays,Javascript,Jquery,Arrays,我正在使用$.inArray检查值是否在数组中。如果不是,我想添加它,否则什么也不做 var arrayValues = [1]; for (var i = 1; i <= 3; i++) { if($.inArray('1', arrayValues) === -1) { arrayValues.push(0+i); } } var arrayvalue=[1]; 对于(var i=1;i您的代码示例从不调用$.inArray。它有语法错误

我正在使用$.inArray检查值是否在数组中。如果不是,我想添加它,否则什么也不做

var arrayValues = [1];

for (var i = 1; i <= 3; i++) {

    if($.inArray('1', arrayValues) === -1) {

        arrayValues.push(0+i);  

    }

}
var arrayvalue=[1];

对于(var i=1;i您的代码示例从不调用
$.inArray
。它有语法错误,因为存在多个未关闭的参数

if($.inArray('value', valuesArray) === -1) {

    valuesArray.push(value);  

}

您的问题是在数组中添加了数字
1
,但检查是否存在字符串
“1”
。它们对于
$不相等。inArray

您可以这样做:

if($.inArray(1, arrayValues) === -1) { // <- test with a number, not a string
    arrayValues.push(0+i); // note that the 0+ here is useless
}

关于
==
vs
==

的更多信息是
'value'
还是
value
?您知道object1==object2只有在它是相同的引用时才会出现吗?如果您想要答案,请给我们一个相关的代码。
如果('value',valuesArray))===-1)
应该怎么做?忘记使用$.inArray()?!对不起,我在休息时写得很快。已修复。您的代码和您描述的行为之间仍然没有可见的关系。@ignaty您能否首先回答dystroy的问题:它是值还是“值”?这不应该是注释吗?抱歉,我在休息时写得很快。修正了这是一个答案,但问题转移到了我身上。你只注意到,像评论员一样,问题中有明显的拼写错误。答案应该有助于解决实际问题,而不是指出实际使用的代码中显然没有的错误。@KevinBowersox如果您是新用户,这不会是问题。但你是一个拥有超过2万名代表的值得信赖的用户。你不应该做这种愚蠢的事情。
inArray: function( elem, arr, i ) {
    var len;

    if ( arr ) {
        if ( core_indexOf ) {
            return core_indexOf.call( arr, elem, i );
        }

        len = arr.length;
        i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;

        for ( ; i < len; i++ ) {
            // Skip accessing in sparse arrays
            if ( i in arr && arr[ i ] === elem ) {
                return i;
            }
        }
    }

    return -1;
},