2017-12-12 130 views
5

मैं lodash filter प्रलेखन पर एक नज़र लिया है और यह स्पष्ट नहीं है कि क्या तीसरे पैरामीटर एक संदर्भ है।क्या लॉलाश का फ़िल्टर फ़ंक्शन एक संदर्भ लेता है?

मैं एक cytoscape प्लगइन (dagre) का उपयोग कर रहा है और यह this एक 3 तर्क के रूप में पारित करने के लिए लगता है। फ़िल्टर विधि को कॉल करने से पहले जब मैं निष्पादन रोकता हूं, this परिभाषित किया जाता है। लेकिन कॉल के भीतर this अपरिभाषित है।

मैं underscore filter प्रलेखन पर एक नज़र था और यह एक संदर्भ के रूप में एक तीसरा तर्क लेने के लिए लगता है। तो मैं थोड़ी अनुमान लगा रहा हूं कि प्लगइन मूल रूप से अंडरस्कोर का उपयोग करता है तो शायद लॉनाश में बदल जाता है। जिस परियोजना पर मैं काम कर रहा हूं वह लॉनाश का उपयोग कर रहा है।

मैं नहीं समझ सकता क्यों this मेरी सका में उस बिंदु पर रिक्त है। यह प्रोजेक्ट विशिष्ट हो सकता है लेकिन मैं बस लॉनाश के फ़िल्टर के तीसरे पैरामीटर पर स्पष्ट होना चाहता हूं।

अंडरस्कोर के फिल्टर के रूप में बिल्कुल वैसा ही lodash के फिल्टर की परिभाषा है? यह प्रलेखन से ऐसा प्रतीत नहीं होता है।

+0

क्या तीसरा पैरामीटर, lodash 'filter' विधि पर कोई तीसरा पैरामीटर नहीं है। –

+0

@chsdk हाँ ... मैंने सोचा होगा कि आप अंडरस्कोर को लॉनाश के साथ बदल सकते हैं। लेकिन अंडरस्कोर एक तीसरा पैरामीटर ले सकता है जबकि लॉनाश नहीं करता है। – Touch

+2

लोडाश 3 'फ़िल्टर' का तीसरा संदर्भ पैरामीटर है। इसे लोडाश 4 में हटा दिया गया है। – Tushar

उत्तर

2

दुर्भाग्य lodash filter method, underscore filter method के विपरीत, एक context तर्क के लिए एक विकल्प, प्रदान नहीं करता है के रूप में यह केवल दो तर्क लेता है:

तर्क

  • सहयोगी उद्धरण (ऐरे | ऑब्जेक्ट): संग्रह को फिर से चालू करने के लिए।
  • [predicate = _। पहचान] (फ़ंक्शन): फ़ंक्शन प्रति पुनरावृत्ति का आह्वान किया गया।

आप क्या कर सकते हैं, वांछित context वस्तु को कॉलबैक फ़ंक्शन बाध्य करने के लिए इस तरह .bind() method उपयोग करने के लिए है:

_.filter(array, callback.bind(context)); 

नोट:

नोट जावास्क्रिप्ट है इसका अपना Array#filter() method जो पहले से ही यह विकल्प प्रदान करता है।

3

वैसे आप हमेशा Function.prototype.bind का उपयोग कर अपने स्वयं के संदर्भ परिभाषित कर सकते हैं।

_.filter([…], 
    function (o) { 
    console.log(this.id); //100 
    //than return something based on o 
    return o.active 
    }.bind({id: 100}) 
); 

Doc on mdn

+0

प्राप्त करें आप उत्तर भी स्वीकार्य है। इसे वोट दिया। दूसरे को चुनो क्योंकि यह इस तथ्य के बारे में बात करता है कि लॉनाश की फ़िल्टर विधि अंडरस्कोर में से एक से अलग है। लेकिन उत्तर के लिए धन्यवाद। इसकी प्रशंसा करना :-) – Touch

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