2011-09-15 45 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

相关问题