[Dart]Map(マップ)の要素を条件で検索するには?

Dart

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

Mapの要素を条件で検索する方法を紹介します。

スポンサーリンク

方法

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

Mapの要素を条件で検索するには、entriesプロパティとfirstWhereメソッドを使います。

まず、Mapからentriesプロパティにアクセスします。

そして、entriesからfirstWhereメソッドを呼び出します。

firstWhereメソッドの第1引数には要素の条件式を返す関数、第2引数「orElse」には見つからなかった際に返す値(MapEntry)を指定します。

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

firstWhereメソッドは、Mapの先頭から最初にtrueを返した要素をMapEntryとして取得します。。

firstWhereメソッドの第1引数のコールバック関数は、引数でマップの要素をMapEntryとして取得することが出来ます。

もし、条件に一致する全てのキーを取得したい場合は、firstWhereメソッドの代わりにwhereメソッドを使います。

var find = map.entries.where((entry) => 条件式);

使用例

void main() {
  var numbers = {
    'One' : 1,
    'Two' : 2,
    'Three' : 3,
    'Four' : 4,
    'Five' : 5,
  };
  
  //キーがoを含み、値が2以上の要素を検索
  var find = numbers.entries.firstWhere(
    (entry) => entry.key.contains('o') || entry.value > 2,
    orElse : () => MapEntry('Zero', 0)
  );
  
  print(find); //MapEntry(Two: 2)
}

コメント

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