2011-09-15 44 views
11

我遇到了一個IE8問題,我最初認爲這是因爲缺乏對indexOf()屬性的IE8支持,但似乎並非如此。我實現了的indexOf()通過原型,但仍不斷收到錯誤訊息 -對象不支持屬性或方法「過濾器」

對象不支持屬性或方法「過濾器」

我的代碼,它的錯誤出在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

看一看於:https:/ /developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter –

+0

@Felix - 真棒,這解決了它,謝謝! – firedrawndagger

回答

13

Array.filter不是跨瀏覽器兼容的,你必須將它原型化到Array上。您可能還需要驗證您過濾陣列是從來沒有的typeof「未定義」

更新: MDN提供如何原型濾波器到數組的引用: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

+3

+1,您需要在IE中使用IE9 +本地.filter; http://kangax.github.com/es5-compat-table/ –

+0

@Alex謝謝我正在尋找類似的東西!不知道像CSS一樣,瀏覽器有一個完整的J/S兼容表。 – firedrawndagger

+0

我試圖用**函數調用isBigEnough(value){ 返回值> = 10; } var filtered = [12,5,8,130,44] .filter(isBigEnough); ** – gstackoverflow

相關問題