🍥
【Dart】Map から Value が null のエントリーを削除する
※この記事はQiitaの本記事にて投稿した記事に加筆・修正し、移行した記事です。
Dart の Map object から値が null になっているエントリーを削除する方法を備忘録として残します。
要約
-
removeWhere()
メソッドを使用する - Map 宣言時に条件分岐させる
- 初期値を入れたいなら条件分岐を使うべきか?
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()
で統一したいところですが、初期値を入れたいケースもあるので、使い分けたいですね。
参考
Discussion