【Dart 教程系列第 19 篇】Dart 之 indexWhere、lastIndexWhere 返回数组中第一个满足条件的元素的索引

这是【Dart 教程系列第 19 篇】,如果觉得有用的话,欢迎关注专栏。

Dart 返回数组中第一个满足条件的元素的索引,用 indexWhere() 方法或者 lastIndexWhere() 方法 ,其中 indexWhere 方法是从前往后找,lastIndexWhere方法是从后往前找,下面分别举例说明。

indexWhere 方法的源代码定义如下

int indexWhere(bool test(E element), [int start = 0]);

返回值为 int ,第一个参数为要查找的条件,返回 bool,如果存在满足条件的元素返回 true,反之返回 false 。第二个参数为从哪个索引开始查找,是可选参数,默认为 0。

例 1

  List<String> l1 = ["一月", "二月", "三月", "四月", "三月"];

  int a = l1.indexWhere((e) => e == "三月");
  int b = l1.indexWhere((e) => e == "三月", 3);
  int c = l1.indexWhere((e) => e == "十二月");

  print(a); // 2 从数组起始位置开始查找第一次出现"三月"的元素,返回该元素所在的索引
  print(b); // 4 从数组索引为 3 开始向后查找第一次出现"三月"的元素,返回该元素所在的索引
  print(c); // -1 数组中不存在"十二月",返回 -1 

lastIndexWhere 方法源代码定义如下

int lastIndexWhere(bool test(E element), [int start]);

和 indexWhere 方法一样,只不过是从后向前倒序查找,相似之处不再赘述。

例 2

  List<int> l1 = [8, 12, 4, 1, 17, 33, 10];
  
  int a = l1.lastIndexWhere((e) => e > 10);
  int b = l1.lastIndexWhere((e) => e > 10, 2);
  int c = l1.lastIndexWhere((e) => e > 10, 4);
  int d = l1.lastIndexWhere((e) => e > 50);
  
  print(a); // 5 当前数组倒序第一个比 10 大的元素是 33,该元素的索引是 5
  print(b); // 1
  print(c); // 4
  print(d); // 当前数组中没有比 50 大的数,返回 -1

特别说明:lastIndexWhere 方法只是从后向前查,返回的还是指定元素所在的索引,不要误以为索引也是从后先前由0开始了

更多 Dart 中 List 数组的方法,推荐一篇博客 Dart 中 List 数组的常用方法

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen Su

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值