2017-10-10 21 views
10

एक और प्रश्न पोस्ट में इस वहाँ था:एमएस एज क्यों फैल तत्व और क्वेरी चयनकर्ता के साथ काम नहीं कर रहा है?

function expected

हालांकि इस काम कर रहा है:

this.products = [...document.querySelectorAll('.product')]; 

एज निम्न त्रुटि के साथ विफल हो जाएगा

var params = ['hello', '', 7]; 
var other = [ 1, 2, ...params]; 

क्यों शीर्ष नहीं है एज पर काम कर रहा है (यह क्रोम पर करता है)?

+1

क्या आपने कोशिश की है [... (document.querySelectorAll ('। Product'))] '? –

+1

मैंने आपके सुझाव पर काम किया, काम नहीं कर रहा! – Mouser

+5

एज नोडलिस्ट के लिए इटरेटर प्रोटोकॉल को लागू नहीं कर सकता है? * संपादित करें: * हाँ: https://developer.mozilla.org/en-US/docs/Web/API/NodeList#Browser_compatibility (कम से कम यह 'प्रविष्टियों() ',' मान() 'आदि का समर्थन नहीं करता है , जो मुझे विश्वास है कि अगर यह इटरेटर प्रोटोकॉल का समर्थन करेगा)। –

उत्तर

7

आप Array.from का उपयोग कर सकते हैं, जो ऑब्जेक्ट जैसे किसी सरणी से सरणी उत्पन्न करता है।

this.products = Array.from(document.querySelectorAll('.product')); 
+2

वैसे भी वांछित रूपांतरणों के लिए यह [पसंदीदा वाक्यविन्यास] (https://stackoverflow.com/a/40549565/1048572) है – Bergi

1

खैर यह लग रहा है Bergi और फेलिक्स की तरह सही रास्ते पर हैं: MDN पर इस document में वे iterators के बारे में बात करते हैं।

Some built-in constructs, such as the spread operator, use the same iteration protocol under the hood:

तो जहां सरणी entries() एज में एक nodelist नहीं करता है और समर्थन नहीं करता यात्रा करता है।

नीना का जवाब गेटो एक है!

संबंधित मुद्दे