Dart リスト(配列)を後ろから検索して最初に値が見つかった位置を取得する

Dart リスト(配列)を後ろから検索して最初に値が見つかった位置を取得する

Dartで、リスト(配列)を後ろから検索して最初に値が見つかった位置を取得するコードを記述してます。「lastIndexOf」に位置を取得したい値を指定することで取得できます。存在しない場合は決まった値「-1」が返ります。「lastIndexWhere」を使用した場合は更に条件を指定して位置を取得することができます。

環境

  • OS windows11 home
  • Dart 2.18.1

後ろから検索

後ろから検索して値が見つかった位置を取得するには「 lastIndexOf 」を使用します。

リスト.lastIndexOf(値)

※値が存在しない場合は「-1」が返ります

実際に使用して位置を取得してみます。

void main() {
  var list = ['aaa', 'bbb', 'ccc', 'bbb', 'ccc'];

  print(list.lastIndexOf('aaa'));
  // 0

  print(list.lastIndexOf('bbb'));
  // 3

  print(list.lastIndexOf('ccc'));
  // 4

  print(list.lastIndexOf('eee'));
  // -1
}

実行結果を見ると、後ろから検索して最初に見つかったインデックス番号が取得されていることが確認できます。

検索を開始する位置を第二引数に指定することもできます。

void main() {
  var list = ['aaa', 'bbb', 'ccc', 'bbb', 'ccc'];

  print(list.lastIndexOf('bbb',2));
  // 1
}

lastIndexWhere

「lastIndexWhere」を使用すると、条件を指定して位置を取得することが可能です。
※ここでは先頭の文字が「b」のものを条件に指定してます。

void main() {
  var list = ['aaa', 'bbb', 'ccc', 'bbb', 'ccc'];

  print(list.lastIndexWhere((item) => item.startsWith('b')));
  // 3
}

最初に見つかった位置

逆に、最世に見つかった位置を取得するには「indexOf」を使用します

void main() {
  var list = ['aaa', 'bbb', 'ccc', 'bbb', 'ccc'];

  print(list.indexOf('aaa'));
  // 0

  print(list.indexOf('bbb'));
  // 1

  print(list.indexOf('ccc'));
  // 2

  print(list.indexOf('eee'));
  // -1
}