2017-04-13 18 views
8

मैं यह पता लगाने की कोशिश कर रहा हूं कि लोडाश इटारेटे कैसे काम करता है और जहां मैं इसका उपयोग करूंगा।क्या आप अंग्रेजी में लोडाश इटरटे समारोह को समझा सकते हैं?

प्रलेखन कहते हैं:

एक समारोह है कि बनाया समारोह के तर्क के साथ समारोह का आह्वान बनाता है। यदि func एक संपत्ति का नाम है, तो बनाया गया फ़ंक्शन किसी दिए गए तत्व के लिए संपत्ति मान देता है। यदि func एक सरणी या ऑब्जेक्ट है, तो बनाया गया फ़ंक्शन उन तत्वों के लिए सत्य देता है जिनमें समकक्ष स्रोत गुण होते हैं, अन्यथा यह झूठी रिटर्न देता है।

यह दस्तावेज़ीकरण के उदाहरणों में से एक है, लेकिन मुझे इसके आसपास अपने सिर को लपेटने में कुछ परेशानी हो रही है।

var users = [ 
    { 'user': 'barney', 'age': 36, 'active': true }, 
    { 'user': 'fred', 'age': 40, 'active': false } 
]; 

// The `_.matches` iteratee shorthand. 
_.filter(users, _.iteratee({ 'user': 'barney', 'active': true })); 
// => [{ 'user': 'barney', 'age': 36, 'active': true }] 

उत्तर

17

मूल रूप से एक फ़ंक्शन में एक iteratee। जब आप लॉनाश के iteratee फ़ंक्शन को कॉल करते हैं तो यह फ़ंक्शन देता है जिसे बाद में कोड में उपयोग किया जा सकता है।

उदाहरण कोड में निम्नलिखित ऑब्जेक्ट्स का उपयोग करके, मैं 3 अलग-अलग प्रकार के इटरेटेट का उपयोग करूंगा जो बदले में वर्णन करेंगे।

let mary = { 
    name: 'mary', 
    gender: 'female', 
    age: 25, 
    job: { 
     title: 'teacher', 
     salary: 10000 
    } 
} 

let dave = { 
    name: 'dave', 
    gender: 'male', 
    age: 27 
} 

let oswald = { 
    name: 'oswald', 
    gender: 'male', 
    age: 25 
} 

let people = [mary, dave, oswald]; 

1. संपत्ति

iteratee iteratee एक तार के साथ कहा जाता है, यह एक समारोह है कि आपूर्ति की स्ट्रिंग के प्रमुख के साथ एक वस्तु की संपत्ति वापस आ जाएगी देता है।

उदा

let getAge = _.iteratee('age'); 

क्या हम यहाँ के साथ अंत एक समारोह है कि एक वस्तु की उम्र संपत्ति रिटर्न है। कुछ के समान:

function getAge(object){ 
    return object['age']; 
} 

तो हम लोगों की उम्र वापस जाने के लिए getAge उपयोग कर सकते हैं:

let marysage = getAge(mary); 
let davesage = getAge(dave); 

स्ट्रिंग भी एक संपत्ति के लिए एक रास्ता हो सकता है:

let jobtitle = _.iteratee('job.title'); 

2। मैट्सटेर

जब iteratee किसी ऑब्जेक्ट के साथ कहा जाता है, तो यह लौटाता है एक वस्तु (वास्तविक या गलत लौटाती है) यदि किसी ऑब्जेक्ट के पास दिए गए मान के साथ मिलान करने वाली कुंजी है।

उदा

let is25 = _.iteratee({age: 25}); 

let isMary25 = is25(mary); 
let isDave25 = is25(dave); 

मैचों में यह एक ही संपत्ति तक ही सीमित नहीं है। यह कई कुंजी और मूल्यों ले जा सकते हैं:

let isFemaleAged25 = _.iteratee({gender: 'female', age: 25}); 

3. संपत्ति iteratee

यह iteratee मैचों के समान है, लेकिन जब मेल iteratee कुंजी और मूल्यों की एक सरणी के साथ कहा जाता है बन जाता है।

is25 समारोह ऊपर बनाया भी तो की तरह बनाया जा सकता है:,

let is25 = _.iteratee(['age', 25]); 

गुण भी एक प्रमुख करने के लिए एक रास्ता हो सकता है जो कुछ मैचों का उपयोग नहीं किया जा सकता है iteratee:

let isTeacherAged25 = _.iteratee(['age', 25, 'job.title', 'teacher']) 

iteratees का उपयोग

अधिकांश समय आप सीधे iteratee फ़ंक्शन को कॉल नहीं करेंगे। जब आप एक फ़ंक्शन को कॉल करते हैं तो लोडाश आंतरिक रूप से फ़ंक्शन का उपयोग करेगा जो एक इटेटेट ले सकता है।

उदा

let names = _.map(people, 'name'); // => ['mary', 'dave', 'oswald'] 

यहाँ lodash स्ट्रिंग name साथ iteratee कॉल और समारोह के रूप में इसका इस्तेमाल करते हैं नक्शा कॉल करने के लिए होगा।

let peopleAged25 = _.filter(people, {age: 25 }); // mary and oswald 

यहाँ lodash वस्तु {age: 25} साथ iteratee कॉल और समारोह लोग संग्रह फिल्टर करने के लिए के रूप में यह प्रयोग करेंगे।

+0

एक संक्षिप्त उत्तर और स्पष्टीकरण के लिए धन्यवाद। – johnwick0831

+1

भयानक उत्तर। बहुत विस्तृत –

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