代码之家  ›  专栏  ›  技术社区  ›  Magnus

如何从dart中的list<map<string,string>>创建list<string>

  •  2
  • Magnus  · 技术社区  · 6 年前

    我有一个 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']);
        });
    }
    

    它工作得很好,但是我很好奇是否有一个单行程序可以以一种整洁(并且可以防止错误)的方式完成相同的事情?

    2 回复  |  直到 6 年前
        1
  •  1
  •   gi097 Sildoreth    6 年前

    我想你在找这样的东西:

    var images = map['images'].where((m) => m['url'] != null).map((value) => value['url']).toList();
    

    首先,我们从中选择所有项目 map 不包含 null 字段为 url . 然后我们绘制这些地图 网址 新的值 List .

        2
  •  3
  •   Günter Zöchbauer    6 年前
    var list = map['images'].map((innerMap) => innerMap['url']).toList()