2011-09-15 55 views
11

私は最初にindexOf()プロパティのIE8サポートが不足していると考えていたIE8の問題にぶち当たっていますが、そうではありませんでした。私は、プロトタイプを通じてのindexOf()を実装し、それでもエラーmesssage取得しておく -オブジェクトはプロパティまたはメソッド 'filter'をサポートしていません

オブジェクトがpassedArray.filter行でエラープロパティまたはメソッド「フィルタ」

私のコードがあるとしてサポートしていませんが。

function consolidatedFilters(passedArray, passedFilter, passedFilterType) 
    if (passedFilterType == "specialty") 
    {  
     var filteredArray = passedArray.filter(
      function(el) 
      { 
       for (i in passedFilter) 
       { 
        if (passedFilter[i] == el[8]) 
        { 
         return true; 
        } 
       } 
       return false 
      } 
     );  
     return filteredArray; 
    } 
+1

はを見てください: MDNは、アレイ上にフィルタのプロトタイプを作成する方法への参照を提供しています。https:/また、あなたはフィルタリングしている配列は、typeofを「未定義」

アップデート決してないことを確認することをお勧めします/developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/Array/filter –

+0

@Felix - すばらしい、これで解決しました、ありがとう! – firedrawndagger

答えて

13

Array.filterはブラウザ間で互換性がありません。これをArrayにプロトタイプする必要があります。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

+3

+1、IEのネイティブ.filterにはIE9 +が必要です。 http://kangax.github.com/es5-compat-table/ –

+0

@Alex thanks同じようなものをお探しでした! CSSのようなブラウザ用のJ/S互換性テーブルがあることは知らなかった。 – firedrawndagger

+0

** function isBigEnough(value){ 戻り値> = 10で呼び出すようにしようとしています。 } ブラウザでフィルタリングした[12、5、8、130、44] .filter(isBigEnough); ** – gstackoverflow

関連する問題