我有一个Map
,看起来像这样
{
title: "Hello world",
images: [
{ url: "http://example.com/image1" },
{ url: "http://example.com/image2" },
{ url: "http://example.com/image3" }
]
}
并且我需要List<String>
张看起来像这样的图像
[
"http://example.com/image1",
"http://example.com/image2",
"http://example.com/image3"
]
我当前的代码如下
List<String> images = [];
if( map['images'] is List<dynamic> ) {
map['images'].forEach((v) {
if (null != v['url'])
images.add(v['url']);
});
}
它很好用,但是我很好奇是否有一种单线可以以一种简洁(且错误安全)的方式完成相同的事情?
答案 0 :(得分:3)
var list = map['images'].map((innerMap) => innerMap['url']).toList()
答案 1 :(得分:1)
我想您正在寻找这样的东西:
var images = map['images'].where((m) => m['url'] != null).map((value) => value['url']).toList();
首先,我们从map
中选择所有不包含null
的{{1}}字段的项目。然后,我们将这些url
值映射到新的url
。