2011-09-15 19 views
11

Mi sto imbattendo in un problema IE8 che inizialmente pensavo fosse dovuto alla mancanza di supporto IE8 per la proprietà indexOf() ma non sembrava essere il caso. Ho implementato l'indexOf() tramite prototipo ma ancora continuo a ricevere l'errore di messsage -L'oggetto non supporta la proprietà o il metodo 'filter'

oggetto non supporta la proprietà o il metodo 'filtro'

Il mio codice è e gli errori sulla linea 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

Dai un'occhiata alla: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter –

+0

@Felix - fantastico, questo lo risolve, grazie! – firedrawndagger

risposta

13

Array.filter non è compatibile con più browser, è necessario eseguirne il prototipo su Array. Si consiglia inoltre di verificare che l'array che si sta filtrando non è mai typeof 'undefined'

Aggiornamento: MDN fornisce un riferimento a come prototipo del filtro sulla matrice: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

+3

+1, Avresti bisogno di IE9 + per un .filter nativo in IE; http://kangax.github.com/es5-compat-table/ –

+0

@Alex grazie, stavo cercando qualcosa di simile! Non sapevo che esistesse un'intera tabella di compatibilità J/S per browser come per i CSS. – firedrawndagger

+0

Sto provando a invocare con ** function isBigEnough (value) { valore restituito> = 10; } var filtered = [12, 5, 8, 130, 44] .filter (isBigEnough); ** – gstackoverflow

Problemi correlati