1

我有两个包含字符串值的数组(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 调试器控制台

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

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

4

1 回答 1

4

请改用以下代码:

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

除非你使用"use strict";,否则原始字符串被装箱在一个String对象中(自己看:typeof this"object",而不是字符串)。因此,搜索方法(indexOf数组的方法)找不到值。
上面的代码通过正确利用jQuery().each.

于 2012-12-06T08:35:59.663 回答