Friday, 15 August 2014

JavaScript: Function not modifying the actual array -


मेरे पास इस तरह सरणियाँ हैं:

  ['मार्कडाउन', ['पैरा' '\' उदाहरण \ '']]  

और मेरे पास एक ऐसा फ़ंक्शन है जो उस सरणियों के अंदर आने वाली तार को याद करते हैं:

  फ़ंक्शन ट्रैवर्स (पेड़, कॉलबैक ) {For (var i = 0; i & lt; tree.length; ++ i) {if (_.isArray (पेड़ [i]) || _.isObject (पेड़ [i])) {traverse (पेड़ [i समस्या है, जब मैं  की जगह  की तरह कार्य करता हूँ, जो कि उस स्थान पर ले जा रहा है, वास्तविक एआर टी लेकिन सिर्फ अपने नोड्स की प्रतियां उदाहरण: 

  फंक्शन को बदलते हैं (पेड़, कॉलबैक) {ट्रॉप्स (पेड़, फ़ंक्शन (नोड) {नोड = नोड.रेले (/ '/ जी,' '') console.log (नोड) // outputs: "example"}) कॉलबैक (नल, पेड़)} फ़ंक्शन showResult (गलती, पेड़) {console.log (पेड़) // आउटपुट ['मार्कडाउन', ['पैरा', '\' उदाहरण \ '' ]]}  

मैं यह कैसे कर सकता हूं ताकि मैं अनुक्रमित फ़ंक्शन के साथ वास्तविक सरणियों को संशोधित कर सकूं?

(वैसे , मैं नोड.जेएस मॉड्यूल का उपयोग कर रहा हूं।)

तारों को मूल्य से पारित किया जाता है - यही कारण है आपका कोड ऐसा तरीके से बर्ताव करता है। यह एक अच्छा समाधान है कि आपके कॉलबैक को नया मान वापस लाया जाए और फिर अपने ट्रैवर्स को थोड़ा सुधारें:

  फ़ंक्शन ट्रॅनवर (ट्री, कॉलबैक) {for (var i = 0; i & lt; tree.length; ++ i) {यदि (_.isArray (पेड़ [i]) || _.isObject (पेड़ [i])) {ट्रॅनवर्स (पेड़ [i], कॉलबैक)} और { पेड़ [i] = कॉलबैक (पेड़ [आई]) // परिवर्तित हिस्सा}}}   

आप तब इसे इस तरह से प्रयोग करेंगे:

  फंक्शन को बदलने के लिए उद्धरण (पेड़, कॉलबैक) {ट्रॅनवर्स (पेड़, फ़ंक्शन (नोड) {return node.replace (/ ('' मार्कडाउन ', [' पैरा ',' \ 'उदाहरण \' ']] कॉलबैक (रिक्त, पेड़)} / <>   / प्री> 

No comments:

Post a Comment