🦁

【Dart】Map から Value が null のエントリーを削除する

2024/03/22に公開

※この記事はQiitaの本記事にて投稿した記事に加筆・修正し、移行した記事です。

Dart の Map object から値が null になっているエントリーを削除する方法を備忘録として残します。

要約

  1. removeWhere() メソッドを使用する
  2. Map 宣言時に条件分岐させる
  3. 初期値を入れたいなら条件分岐を使うべきか?

removeWhere() メソッドを使用して削除する方法

  
  Map<String, dynamic> m = {
    "name": "ndj",
    "email": "email@exapmle.com",
    "phone-number": null
  };

  m.removeWhere((_, v) => v == null);
  print(m);
  //>>{name: ndj, email: email@exapmle.com}

Map 宣言時に条件分岐させる方法


  String name = "ndj";
  String email = "email@exapmle.com";
  String? phoneNumber;

  Map<String, dynamic> m = {
    "name": name,
    "email": email,
    if (phoneNumber != null) "phone-number": phoneNumber
  };

  print(m);
  //>>{name: ndj, email: email@exapmle.com}

キー自体は残して、null の場合初期値を設定したい場合


  String name = "ndj";
  String email = "email@exapmle.com";
  String? phoneNumber;

  Map<String, dynamic> m = {
    "name": name,
    "email": email,
    "phone-number": phoneNumber ?? "000-0000-0000"
  };

  print(m);

さいごに

2つめの方法は冗長になりやすそうなので、removeWhere() で統一したいところですが、初期値を入れたいケースもあるので、使い分けたいですね。

参考

https://www.choge-blog.com/programming/dartmapremovenull/

Discussion