यदि आप अंडरस्कोर के साथ रहना चाहते हैं तो आपका विधेय समारोह अधिक लचीला हो सकता है, यहां 2 विचार हैं।
विधि 1
चूंकि _.find
किसी तत्व के मूल्य और सूचकांक दोनों को प्राप्त करने के लिए विधेय होता है, आप इस तरह सूचकांक को पुनः प्राप्त करने के लिए साइड इफेक्ट का उपयोग कर सकते हैं:
var idx;
_.find(tv, function(voteItem, voteIdx){
if(voteItem.id == voteID){ idx = voteIdx; return true;};
});
विधि 2
अंडरस्कोर स्रोत को देखते हुए, यह इस प्रकार _.find
लागू किया गया है:
_.find = _.detect = function(obj, predicate, context) {
var result;
any(obj, function(value, index, list) {
if (predicate.call(context, value, index, list)) {
result = value;
return true;
}
});
return result;
};
इसे एक findIndex
फ़ंक्शन बनाने के लिए , बस इस विधि के result = value;
साथ लाइन को बदलें result = index;
यह पहला तरीका है। मैंने इसे इंगित करने के लिए शामिल किया कि अंडरस्कोर साइड इफेक्ट का उपयोग करने के लिए भी लागू _.find
करता है।