[Dart]Map(マップ)でfirstWhereメソッドを使うには?

Dart

どうも、ちょげ(@chogetarou)です。

MapのfirstWhereメソッドを使う方法を紹介します。

スポンサーリンク

方法

コンピューター, ノート, オフィス, コード, プログラミング, プログラム

MapでfirstWhereメソッドを使うには、以下のプロパティを使います。

  • entriesプロパティ : Mapの要素をMapEntryのコレクションで取得
  • keysプロパティ:Mapのキーをコレクションとして取得
  • valuesプロパティ:Mapの値をコレクションとして取得

上記の3つのプロパティに、firstWhereメソッドを呼び出す前に、アクセスします。

そして、firstWhereメソッドの第1引数に条件式を返すコールバック関数を指定します。

また、必要であれば、2引数「orElse」に見つからなかった際の代わりの値を返す関数を指定します。

map.entries.firstWhere((entry) => 条件式, orElse: ()=> MapEntry(・・・));

map.keys.firstWhere((key) => 条件式, orElse: ()=> null);

map.values.firstWhere((value) => 条件式, orElse: ()=> null);

entries、keys、valuesのプロパティにアクセスすることで、firstWhereメソッドが使えるようになります。

firstWhereの第1引数のコールバック関数は、引数でアクセスするプロパティに対応した値を受け取ります。

また、firstWhereメソッドの戻り値も、アクセスするプロパティに対応したものになります。

プロパティコールバックの引数firstWhereメソッドの戻り値
entriesプロパティMapの要素(MapEntry)MapEntry
keysプロパティMapのキーMapのキー
valuesプロパティMapの値Mapの値

使用例

void main() {
  var numbers = {
    'One' : 1,
    'Two' : 2,
    'Three' : 3,
    'Four' : 4,
    'Five' : 5,
  };
  
  var find = numbers.entries.firstWhere(
    (entry) => entry.key.contains('o') || entry.value > 2,
    orElse : () => MapEntry('Zero', 0)
  );
  print(find); //MapEntry(Two: 2)
  
  
  var findKey = numbers.keys.firstWhere((key) => key.length  > 4);
  print(findKey); //Three
  
  var findValue = numbers.values.firstWhere((value) => value % 3 == 0);
  print(findValue); //3
}

コメント

タイトルとURLをコピーしました