dart - 如何从 Dart 中的映射中过滤空值
问题描述
在地图之后,将两个键值对都设为动态,编写一个逻辑以在没有我们的情况下过滤 Map 中的所有空值?
除了遍历整个地图并过滤掉值(遍历整个地图并获取条目对象并丢弃这些对)之外,还有其他方法吗?
我需要删除所有为空的值并返回地图
Map<String, dynamic> toMap() {
return {
'firstName': this.firstName,
'lastName': this.lastName
};
解决方案
使用removeWhere
onMap
删除要过滤掉的条目:
void main() {
final map = {'text': null, 'body': 5, null: 'crap', 'number': 'ten'};
map.removeWhere((key, value) => key == null || value == null);
print(map); // {body: 5, number: ten}
}
如果你想把它作为你toMap()
方法的一部分,你可以用级联运算符做这样的事情:
void main() {
print(A(null, 'Jensen').toMap()); // {lastName: Jensen}
}
class A {
final String? firstName;
final String? lastName;
A(this.firstName, this.lastName);
Map<dynamic, dynamic> toMap() {
return <dynamic, dynamic>{
'firstName': this.firstName,
'lastName': this.lastName
}..removeWhere(
(dynamic key, dynamic value) => key == null || value == null);
}
}