2013-07-10 33 views
-2

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

var arrayValues = [1]; 

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

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

     arrayValues.push(0+i); 

    } 

} 

我越来越对AJAX页面加载数据valuesArray = [value, value2];在第二负载我得到第三负载valuesArray valuesArray = [value, value2, value3, value4];我再次得到value,它仍然是推到valuesArrayvaluesArray = [value, value2, value3, value4, value];

任何人都可以解释我做错了什么?

谢谢!

请参阅现场示例jsfiddle

+1

它是“value”还是“value”?你知道那object1 == object2只有当它是相同的参考?如果你想得到答案,请给我们一个有效的相关代码。 –

+1

'if('value',valuesArray))=== -1)'应该做什么?忘记使用$ .inArray()?! –

+0

对不起,正在快速写作休息。固定。 – ignaty

回答

2

您的问题是你加号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 
} 

在使用===1=='1'1!=='1'$.inArray测试,可以在源代码中可以看出:在==

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; 
}, 

更多信息VS ===on the MDN

0

您的代码示例永远不会调用$.inArray。它有语法错误,因为有多个未封闭的parens。

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

    valuesArray.push(value); 

} 
+1

这不应该是一个评论? –

+0

对不起,正在快速写作休息。固定。 – ignaty

+2

@dystroy这是一个答案,但问题转移到我身上。 –

相关问题