1

文字列値(newValuesとoldValues)を含む2つの配列があります。それぞれjqueryを使用してoldValues配列を反復処理し、newValues配列に対して値を確認します。ただし、値がnewValues配列に存在する場合でも、最初にtoStringを実行した場合にのみ検出されます。IE Debugger Consoleは、これはすでに文字列であると言っています(そして、それは私も期待しています)。

コード:

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

IEF12デバッガコンソール

これがすでにstring型である場合でも、なぜ最初に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 に答える