inArray在每个循环中使用字符串返回-1

时间:2012-12-06 08:32:36

标签: javascript jquery

我有两个包含字符串值的数组(newValues和oldValues)。我用每个jquery遍历oldValues数组并检查newValues数组的值。但是,即使newValues数组中存在该值,也只能在我首先执行toString时找到它。 IE调试器控制台howerver说,这已经是一个字符串(这也是我所期望的)。

代码:

$(oldValues).each(function () {
   // always fails (debug snapshot taken here)
   if (jQuery.inArray(this, newValues) === -1) { 
      // ...
   }
});

IE F12 Debugger Console

为什么我必须首先执行toString,即使已经是字符串类型?这与每个jquery有关吗?

我发现的所有类似问题都与类型不匹配有关,但这不是这种情况,对吗?

1 个答案:

答案 0 :(得分:4)

请改用以下代码:

$(oldValues).each(function (index, value) {
   if (jQuery.inArray(value, newValues) === -1) { 

除非您使用"use strict";,否则原始字符串将装在String对象中(请自行查看:typeof this"object",而不是字符串)。因此,搜索方法(数组的indexOf方法)找不到该值 上述代码通过正确使用jQuery().each来解决此问题。