对象不支持属性或方法'filter'

fir*_*ger 11 javascript internet-explorer-8

我遇到了一个IE8问题,我最初认为是由于缺乏对indexOf()属性的IE8支持,但似乎并非如此.我通过原型实现了indexOf()但仍然保持错误消息 -

对象不支持属性或方法'filter'

我的代码是passArray.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;
    }
Run Code Online (Sandbox Code Playgroud)

Sky*_*son 14

Array.filter不符合跨浏览器标准,您必须将其原型化到Array上.您还可能需要验证您要过滤的数组是否从未类型为"未定义"

更新:MDN提供了如何将过滤器原型转换为数组的参考:https: //developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

  • +1,你需要IE9 +用于IE中的原生.filter; http://kangax.github.com/es5-compat-table/ (3认同)