2011-09-15 7 views
11

मैं एक आईई 8 मुद्दा में भाग रहा हूं जिसे मैंने शुरू में सोचा था कि इंडेक्सऑफ() संपत्ति के लिए 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

पर एक नज़र डालें: MDN कैसे सरणी पर फिल्टर प्रोटोटाइप करने के लिए के लिए एक संदर्भ प्रदान करता है: https:/तुम भी सत्यापित करने के लिए सरणी आप फ़िल्टर कर रहे हैं कभी नहीं है typeof 'अनिर्धारित'

अद्यतन चाहते हो सकता है /developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter –

+0

@ फ़ेलिक्स - भयानक, यह हल करता है, धन्यवाद! – firedrawndagger

उत्तर

13

Array.filter क्रॉस-ब्राउज़र अनुपालन नहीं है, आपको उस पर एरे पर प्रोटोटाइप करना होगा। https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter

+3

+1, आपको आईई में देशी के लिए IE9 + की आवश्यकता होगी। आईई में फ़िल्टर; http://kangax.github.com/es5-compat-table/ –

+0

@ एलेक्स धन्यवाद मैं कुछ इसी तरह की तलाश में था! पता नहीं था कि सीएसएस के लिए ब्राउज़र के लिए पूरी जे/एस संगतता तालिका थी। – firedrawndagger

+0

मैं ** फ़ंक्शन isBigEnough (मान) { वापसी मूल्य> = 10 के साथ आने का प्रयास कर रहा हूं; } var फ़िल्टर = = 12, 5, 8, 130, 44]। फ़िल्टर (isBigEnough); ** – gstackoverflow