【问题标题】:List<Map<String,dynamic>> to List<String> DartList<Map<String,dynamic>> 到 List<String> Dart
【发布时间】:2021-03-25 15:42:16
【问题描述】:

我是编程新手。我有一个 List> 的数据,我想从地图值创建一个字符串列表。这是我的示例数据。假设我需要 Dart 中的产品名称列表。感谢您的帮助。谢谢。

final products = [  
     {'productimage': 'image1.jpg', 'productprice': '800', 'productid': '1234', 'productname': 'rabbittoy'},
     {'productimage': 'image2.jpg', 'productprice': '400', 'productid': 'p10001', 'productname': 'mousetoy'},
     {'productid': '4533', 'productprice': '1800', 'productimage': 'image3.jpg', 'productname': 'cat'},
     {'productname': 'dog', 'productid': 'p10002', 'productimage': 'image4.jpg', 'productprice': '3000'}
];

【问题讨论】:

    标签: list flutter dictionary dart


    【解决方案1】:

    您可以使用fold 方法:

      List<String> productNames = data.fold<List<String>>(
          [], (prev, element) => List.from(prev)..add(element['productname']));
    

    完整的 sn-p 示例:

    void main() {
      List<Map<String, dynamic>> data = [
        {
          'productimage': 'image1.jpg',
          'productprice': '800',
          'productid': '1234',
          'productname': 'rabbittoy'
        },
        {
          'productimage': 'image2.jpg',
          'productprice': '400',
          'productid': 'p10001',
          'productname': 'mousetoy'
        },
        {
          'productid': '4533',
          'productprice': '1800',
          'productimage': 'image3.jpg',
          'productname': 'cat'
        },
        {
          'productname': 'dog',
          'productid': 'p10002',
          'productimage': 'image4.jpg',
          'productprice': '3000'
        }
      ];
    
      List<String> productNames = data.fold<List<String>>(
          [], (prev, element) => List.from(prev)..add(element['productname']));
      print(productNames); // [rabbittoy, mousetoy, cat, dog]
    }
    
    

    【讨论】:

    • 按我的预期工作。及时帮助。非常感谢。
    【解决方案2】:

    如果您的列表被分配给名为 products 的变量,我将使用 .map() 执行以下操作:

    final productNames = products.map((Map<String, dynamic> product) {
      return product["productname"];
    }).toList();
    

    我最后使用.toList(),因为.map() 返回一个Iterable 对象而不是List 对象。我无法给你一个 100% 的答案,但你可以阅读它here

    【讨论】:

    • 会试一试。谢谢!
    猜你喜欢
    • 2021-04-13
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2020-08-01
    • 1970-01-01
    • 2020-06-02
    相关资源
    最近更新 更多