我有两个包含字符串值的数组(newValues和oldValues)。我用每个jquery遍历oldValues数组并检查newValues数组的值。但是,即使newValues数组中存在该值,也只能在我首先执行toString时找到它。 IE调试器控制台howerver说,这已经是一个字符串(这也是我所期望的)。
代码:
$(oldValues).each(function () {
// always fails (debug snapshot taken here)
if (jQuery.inArray(this, newValues) === -1) {
// ...
}
});
为什么我必须首先执行toString,即使此已经是字符串类型?这与每个jquery有关吗?
我发现的所有类似问题都与类型不匹配有关,但这不是这种情况,对吗?
答案 0 :(得分:4)
请改用以下代码:
$(oldValues).each(function (index, value) {
if (jQuery.inArray(value, newValues) === -1) {
除非您使用"use strict";
,否则原始字符串将装在String
对象中(请自行查看:typeof this
为"object"
,而不是字符串)。因此,搜索方法(数组的indexOf
方法)找不到该值
上述代码通过正确使用jQuery().each
来解决此问题。