【问题标题】:Object doesn't support property or method 'filter'对象不支持属性或方法“过滤器”
【发布时间】:2011-09-15 22:48:57
【问题描述】:

我遇到了一个 IE8 问题,我最初认为这是由于 IE8 对 indexOf() 属性的支持不足,但事实并非如此。我通过原型实现了 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;
    }

【问题讨论】:

标签: javascript internet-explorer-8


【解决方案1】:

Array.filter 不兼容跨浏览器,您必须将其原型化到 Array 上。您可能还想验证您正在过滤的数组绝不是 typeof 'undefined'

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

【讨论】:

  • +1,您需要 IE9+ 才能在 IE 中使用本机 .filter; kangax.github.com/es5-compat-table
  • @Alex 谢谢我正在寻找类似的东西!不知道有一个完整的浏览器 J/S 兼容性表,就像 CSS 一样。
  • 我正在尝试使用 function isBigEnough(value) { return value >= 10; 调用} var filters = [12, 5, 8, 130, 44].filter(isBigEnough);
  • 在浏览器控制台中,我看到了旧结果
猜你喜欢
  • 2014-03-12
  • 2013-10-02
  • 2019-07-05
  • 2015-04-14
  • 2020-09-03
  • 2015-04-09
  • 2014-01-12
  • 2016-08-20
  • 2013-10-05
相关资源
最近更新 更多