Javascript jQuery$.inArray即使已检查是否存在,仍会传递值
我正在使用$.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。它有语法错误
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;
},