आप each मेथड से ब्रेक नहीं कर सकते। यह नेटिव forEach मेथड के व्यवहार की नकल करता है और नेटिव forEach लूप से बाहर निकलने का कोई तरीका प्रदान नहीं करता (एक्सेप्शन फेंकने के अलावा)।
आप अन्य फंक्शन्स का उपयोग कर सकते हैं जैसे:
_.find: जब एलिमेंट मिल जाता है तो लूप से बाहर निकलता है।
_.find([1, 2, 3, 4], (element) => {
// अपनी कंडीशन यहां चेक करें
if (element === 2) {
return true; // मिल गया - लूप रोकें
}
// एलिमेंट्स के साथ जो करना है करें
// ...
});
each से एक्सेप्शन फेंकें:
try {
_([1, 2, 3, 4]).each((element) => {
// अपनी कंडीशन यहां चेक करें
if (element === 2) {
throw new Error('BreakException');
}
// एलिमेंट्स के साथ जो करना है करें
// ...
});
} catch (e) {
if (e.message !== 'BreakException') throw e;
// कुछ न करें - ब्रेक सफल
}
बेहतर विकल्प (मॉडर्न JS)
// for...of लूप - ब्रेक सपोर्ट करता है
for (const item of array) {
if (item === 2) break;
console.log(item);
}
// some() - true लौटाने पर रुकता है
array.some(item => {
if (item === 2) return true; // ब्रेक
console.log(item);
});
// find() - पहला मैचिंग एलिमेंट लौटाता है
const found = array.find(item => item === 2);
// findIndex() - इंडेक्स लौटाता है
const index = array.findIndex(item => item === 2);
Underscore/Lodash विकल्प
// _.find - पहला मैचिंग एलिमेंट
_.find(array, item => item === 2);
// _.findIndex - इंडेक्स
_.findIndex(array, item => item === 2);
// _.takeWhile - कंडीशन फेल होने तक एलिमेंट्स लें
_.takeWhile(array, item => item < 3); // [1, 2]
सिफारिश: मॉडर्न जावास्क्रिप्ट में नेटिव एरे मेथड्स (find, some, for...of) का उपयोग करें - वे तेज़ हैं और किसी लाइब्रेरी की आवश्यकता नहीं है।