डार्ट में आम के बराबर कोई भी:
enumerate(List) -> Iterator((index, value) => f)
or
List.enumerate() -> Iterator((index, value) => f)
or
List.map() -> Iterator((index, value) => f)
ऐसा लगता है कि यह सबसे आसान तरीका है, लेकिन यह अभी भी अजीब लगता है कि यह कार्यक्षमता मौजूद नहीं है।
Iterable<int>.generate(list.length).forEach( (index) => {
newList.add(list[index], index)
});
संपादित करें:
@ हेमंथ-राज की बदौलत मैं उस समाधान को पा सका था जिसकी मुझे तलाश थी। मैं इसे यहां किसी के लिए भी रखूंगा, जिसे कुछ ऐसा ही करने की जरूरत है।
List<Widget> _buildWidgets(List<Object> list) {
return list
.asMap()
.map((index, value) =>
MapEntry(index, _buildWidget(index, value)))
.values
.toList();
}
वैकल्पिक रूप से आप एक पुन: प्रयोज्य वापस करने के लिए एक तुल्यकालिक जनरेटर फ़ंक्शन बना सकते हैं
Iterable<MapEntry<int, T>> enumerate<T>(Iterable<T> items) sync* {
int index = 0;
for (T item in items) {
yield MapEntry(index, item);
index = index + 1;
}
}
//and use it like this.
var list = enumerate([0,1,3]).map((entry) => Text("index: ${entry.key}, value: ${entry.value}"));
Map#forEach
? यह वही है जो आप चाहते हैं?