मैं ऐसे फ़ंक्शन पर मानों को मैप करने की कोशिश कर रहा हूं जो गुणा करने के लिए दो संख्या स्वीकार करेंगे लेकिन ऐसा करने में परेशानी हो रही है (यदि यह समझ में नहीं आता है, तो नीचे दिए गए उदाहरणों पर नज़र डालें)।पैरामीटर को array.map() में कैसे पास किया जाए?
मेरे पास संख्याओं की एक सरणी है और मैं इस सरणी के मानों को डबल/ट्रिपल/चौगुनी करना चाहता हूं। मैंने ऐसे फ़ंक्शन बनाए हैं जो ऐसा करेंगे, और double()
और triple()
को map()
में खिला रहे हैं।
var arr = [1, 2, 3, 4, 5];
function double(num) {
return num * 2;
}
function triple(num) {
return num * 3;
}
console.log(arr.map(double));
console.log(arr.map(triple));
यह समाधान स्केलेबल नहीं है क्योंकि मैं मानों को 5 या 10 से गुणा करना चाहता हूं? मुझे एक और अमूर्त फ़ंक्शन की आवश्यकता है जो गुणा करने के लिए पैरामीटर लेगा। मैं इस बारे में उलझन में हूं कि यह कैसे करें। मेरे प्रयास अब तक है:
var arr = [1, 2, 3, 4, 5];
function multiply(num, multiplyBy) {
return num * multiplyBy;
}
console.log(arr.map(multiplyBy(4)); // Uncaught TypeError: NaN is not a function
मैं multiply()
multiplyBy
पैरामीटर कैसे पारित होगा?
मैं केवल "फ़ैक्टरी" शब्द का उपयोग उन कार्यों के लिए करता हूं जो ऑब्जेक्ट लौटाते हैं। – Bergi
मैंने अपना उत्तर अधिक पठनीय बना दिया, मैंने केवल अजीब इंडेंटेशन का उपयोग केवल ईएस 6 तीर फ़ंक्शन को एक-लाइनर में बदलने के लिए किया। – Bergi
यह उत्तर '.bind' का उपयोग करने से समझना आसान है – Denny