indexWhere 方法

int indexWhere(
  1. bool test(
    1. E element
    ),
  2. [int start = 0]
)
override

列表中满足提供 test 条件的第一个索引。

从索引 start 开始搜索列表至列表末尾。遇到第一个使 test(o) 为真的对象 o 时,返回 o 的索引。

final notes = <String>['do', 're', 'mi', 're'];
final first = notes.indexWhere((note) => note.startsWith('r')); // 1
final second = notes.indexWhere((note) => note.startsWith('r'), 2); // 3

如果 element 未找到,则返回 -1。

final notes = <String>['do', 're', 'mi', 're'];
final index = notes.indexWhere((note) => note.startsWith('k')); // -1

实现

int indexWhere(bool test(E element), [int start = 0]) {
  if (start < 0) start = 0;
  for (int i = start; i < this.length; i++) {
    if (test(this[i])) return i;
  }
  return -1;
}