2011-09-15 50 views
11

Me encuentro con un problema IE8 que inicialmente pensé que era debido a la falta de compatibilidad con IE8 para la propiedad indexOf() pero que no parecía ser el caso. He implementado el indexOf() a través de prototipo, pero aún sigo recibiendo mensajes con el error -El objeto no admite la propiedad o el método 'filtro'

objeto no admite la propiedad o método de 'filtro'

Mi código es y él los errores en la línea 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

Tenga una mirada en: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter –

+0

@Felix - increíble, esto lo resuelve, gracias! – firedrawndagger

Respuesta

13

Array.filter no es compatible con varios navegadores, tendrá que crear un prototipo en Array. También es posible que desee comprobar que la matriz que está filtrando nunca está typeof 'indefinido'

Actualización: MDN proporciona una referencia a la forma de un prototipo de filtro en serie: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

+3

+1, necesitaría IE9 + para un .filter nativo en IE; http://kangax.github.com/es5-compat-table/ –

+0

@Alex ¡gracias! ¡Estaba buscando algo similar! No sabía que había una tabla completa de compatibilidad J/S para navegadores como para CSS. – firedrawndagger

+0

Estoy tratando de invocar con ** function isBigEnough (value) { return value> = 10; } var filtered = [12, 5, 8, 130, 44] .filter (isBigEnough); ** – gstackoverflow

Cuestiones relacionadas