2016-12-10 10 views
5

मेरे पास एक सरणी है और अब मैं सरणी में प्रत्येक तत्व पर एक फ़ंक्शन निष्पादित करना चाहता हूं।क्या मैं जावास्क्रिप्ट मैप() कॉलबैक फ़ंक्शन के लिए अतिरिक्त पैरामीटर पास कर सकता हूं?

मैं map() फ़ंक्शन का उपयोग करने का प्रयास कर रहा हूं। सवाल यह है कि, मेरा कॉलबैक फ़ंक्शन map() पर पास हो गया है इसके अपने पैरामीटर (तत्व, अनुक्रमणिका, सरणी नहीं) हैं।

क्या मैं ऐसे कॉलबैक फ़ंक्शन के पैरामीटर पास कर सकता हूं? कैसे?

+1

आप क्या मतलब है? 'मानचित्र ((एल्म, अनुक्रमणिका) => {func (पैरा);})'? – Li357

+0

आप अपने कॉलबैक फ़ंक्शन पर अपने कॉलबैक को पैरामीटर प्रीपेड करने के लिए [bind()] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind) का उपयोग कर सकते हैं, यानी आपके फ़ंक्शन में पैरामीटर सूची होगी जैसे '(arg1, arg2,/* आदि * /, तत्व, अनुक्रमणिका, सरणी)' –

उत्तर

9

2 अलग अलग तरीकों के बारे में सोच सकते हैं:

को thisArg का उपयोग करना कॉलबैक में this मान के रूप में एक विकल्प ऑब्जेक्ट सेट करें:

var numbers = '1,2,3,4,5,6,7,8,9,10'.split(','); 
 

 
function callback(element) { 
 
    return parseInt(element) + this.add; 
 
}; 
 

 
var mapped = numbers.map(callback, { 
 
    add: 10 
 
}); 
 

 
console.log(mapped);

कुछ तर्क स्थापित करने के लिए .bind() का उपयोग करना:

var numbers = '1,2,3,4,5,6,7,8,9,10'.split(','); 
 

 
function callback(add, element) { 
 
    return parseInt(element) + add; 
 
}; 
 

 
var mapped = numbers.map(callback.bind(null, 10)); 
 

 
console.log(mapped);

+0

धन्यवाद। मैंने अभी इस सप्ताह जावास्क्रिप्ट सीखना शुरू कर दिया है। जहां तक ​​मुझे पता है, यह एक समारोह का ** पर्यावरण ** है। पहले समाधान के लिए, मुझे लगता है कि आप जो कर रहे हैं वह कॉलबैक पर 'इस' ऑब्जेक्ट को पास कर रहा है। यह 'इस' का जिक्र क्या है? –

+0

@ Jinglei.Y आमतौर पर 'इस' का उपयोग ऑब्जेक्ट को संदर्भित करने के लिए किया जाता है जिसे फ़ंक्शन को विधि के रूप में जाना जाता है। सरणी नक्शा विधि यह निर्दिष्ट करने की अनुमति देती है कि 'यह' वस्तु क्या होनी चाहिए, क्योंकि यह फ़ंक्शन को विधि के रूप में नहीं बुला रहा है, यह बहुत उपयोगी हो सकता है। इस मामले में, मैंने बस यह मान निर्धारित किया है कि यह मेरा स्वयं का ऑब्जेक्ट है। यह प्रश्न 'इस' ऑब्जेक्ट पर अधिक जानकारी में जाता है: ["यह" कीवर्ड कैसे काम करता है?] (Https://stackoverflow.com/questions/3127429/how-does-the-this-keyword-work) –

0

मुझे लगता है कि आप इस तरह से एक और कॉलबैक फ़ंक्शन में अपने मूल कार्य रैप करने के लिए, आवश्यकता हो सकती है:

var array = ['one', 'two', 'skip-a-few', 'three', 'four'] 
 

 
console.log(
 
    array.map(function (element) { 
 
     return original('other', 'variables', element) 
 
    }) 
 
) 
 

 

 
// this function doesn't matter, just an example 
 
function original(a, b, c) { 
 
    return a + ' ' + b + ' ' + c 
 
}

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