जवाबों:
.forEach
पहले से ही यह क्षमता है:
const someArray = [9, 2, 5];
someArray.forEach((value, index) => {
console.log(index); // 0, 1, 2
console.log(value); // 9, 2, 5
});
लेकिन अगर आप की क्षमता चाहते हैं for...of
, तो आप map
सूचकांक और मूल्य के लिए सरणी कर सकते हैं :
for (const { index, value } of someArray.map((value, index) => ({ index, value }))) {
console.log(index); // 0, 1, 2
console.log(value); // 9, 2, 5
}
यह थोड़ा लंबा है, इसलिए इसे पुन: प्रयोज्य कार्य में लगाने में मदद मिल सकती है:
function toEntries<T>(a: T[]) {
return a.map((value, index) => [index, value] as const);
}
for (const [index, value] of toEntries(someArray)) {
// ..etc..
}
Iterable संस्करण
यदि आप --downlevelIteration
संकलक विकल्प के साथ संकलन करते हैं तो ES3 या ES5 को लक्षित करते समय यह काम करेगा ।
function* toEntries<T>(values: T[] | IterableIterator<T>) {
let index = 0;
for (const value of values) {
yield [index, value] as const;
index++;
}
}
Array.prototype.entries () - ES6 +
यदि आप ES6 + वातावरण को लक्षित करने में सक्षम हैं तो आप अर्नावियन के उत्तर.entries()
में उल्लिखित विधि का उपयोग कर सकते हैं ।
Array.some()
और उस पुनरावृत्ति पर झूठे वापस कर सकते हैं जिसे आप रोकना चाहते हैं। यह लगभग स्पष्ट या सुंदर नहीं है, break
लेकिन यह काम पूरा करेगा। व्यक्तिगत रूप से मुझे यह पसंद नहीं है, मैं शायद पुन: कुछ अन्य तरीके से पुनरावृत्ति लिखूंगा :) देखें stackoverflow.com/questions/2641347/…
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/entries
for (var [key, item] of someArray.entries()) { ... }
टीएस में इसे ES2015 को लक्षित करने की आवश्यकता होती है क्योंकि इसे पुनरावृत्तियों का समर्थन करने के लिए रनटाइम की आवश्यकता होती है , जो ES5 रनटाइम नहीं करते हैं। आप निश्चित रूप से ईएस 5 रनटाइम पर आउटपुट कार्य करने के लिए बैबेल जैसे कुछ का उपयोग कर सकते हैं ।
बचाव के लिए "ओल्ड स्कूल जावास्क्रिप्ट" (उन लोगों के लिए जो कार्यात्मक प्रोग्रामिंग के प्यार में परिचित नहीं हैं)
for (let i = 0; i < someArray.length ; i++) {
let item = someArray[i];
}
आप उपयोग कर सकते हैं for..in उपयोग करने के लिए सूचकांक जब संग्रह के साथ काम कर टाइपप्रति ऑपरेटर।
var test = [7,8,9];
for (var i in test) {
console.log(i + ': ' + test[i]);
}
आउटपुट:
0: 7
1: 8
2: 9
डेमो देखें
for..in
आपको उम्मीद से अधिक दे सकता है क्योंकि इसमें ऑब्जेक्ट पर घोषित सभी कार्य शामिल हैं। उदाहरण के लिए:for (var prop in window.document) { console.log(prop); }