有没有办法在map/forEach中识别当前的索引?
在使用map或forEach函数时,有时我们需要知道当前元素在集合中的索引位置。然而,map和forEach函数是定义在Iterable接口上的,而Iterable接口的元素不一定是有序的,所以为每个元素提供索引并不总是有意义的。例如,如果Iterable是一个Set集合,那么元素就没有顺序。
在上述问题中,我不太明白为什么你需要在你的例子中使用索引。如果你能扩展你的例子,或许我就能理解了。
在map函数中使用索引可能有许多其他用途,与元素在原始列表中的实际索引无关。例如:知道当前项之前有多少项,创建自增ID,知道当前项是否在偶数或奇数索引位置等等。
解决这个问题的方法是使用for循环来遍历集合,这样就可以获取到每个元素的索引。下面是一个示例代码:
Listlist = Arrays.asList("apple", "banana", "orange"); for (int i = 0; i < list.size(); i++) { String element = list.get(i); System.out.println("Index: " + i + ", Element: " + element); }
在这个示例中,我们使用for循环来遍历一个List集合,并使用get(i)方法获取每个元素。这样就可以得到每个元素在集合中的索引。
希望这个解决方法能帮助到你!
问题的原因是想要在使用map或forEach迭代列表时,能够获取当前项的索引。解决方法是使用Dart中的新特性——collection for构造。具体代码如下所示:
Widget build(BuildContext context) {
final list = ['Mango', 'Orange', 'Apple'];
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Column(
children: [
for (int i = 0; i < list.length; i++)
ListTile(title: Text('${list[i]} has index $i')),
],
),
);
}
为了使这段代码能够正常运行,需要在`pubspec.yaml`中更新Dart SDK版本:
environment:
sdk: ">=2.3.0 <3.0.0"
另外,也可以通过在外部创建一个单独的for循环,并将所有的小部件添加到一个列表中作为子项来实现相同的效果,这样可能看起来更清晰。如果这个解决方案对您有帮助,请将其标记为正确答案。