繁体   English   中英

如何从字符串列表中获取地图对象列表 dart

[英]How to get a list of map objects from list of strings dart

我有以下电话号码列表:

listofnumbers = ['01225','03933']

以及地图对象列表:

 List mapofobjects = [
      {
        'name': 'John Doe',
        'phone': {
          'numbers': ['03323', '02333'], 
          'verified': true
        },
        'uid': '2BDNDD',
        'createdat': 'today..'
      },
      {
        'name': 'Mary Doe',
        'phone': {
          'numbers': ['03933', '39939'], // matches 03933 in listofnumbers
          'verified': true
        },
        'uid': '1BDNDD',
        'createdat': 'today..'
      },
      {
        'name': 'Vincin Doe',
        'phone': {
          'numbers': ['01225', '59939'], // matches 01225 in listofnumbers
          'verified': true
        },
        'uid': 'XBDNDD',
        'createdat': 'today..'
      }
    ];

如何使用每个 listofnumbers 项作为连接将 listofnumbers 转换为地图对象列表。

我应该为两个数字的 listofnumbers 得到这样的东西:

finalList =  List mapofobjects = [
      {
        'name': 'John Doe',
        'phone': {
          'numbers': ['03323', '02333'],
          'verified': true
        },
        'uid': '1BDNDD',
        'createdat': 'today..'
      },
      {
        'name': 'Vincin Doe',
        'phone': {
          'numbers': ['01225', '59939'],
          'verified': true
        },
        'uid': 'XBDNDD',
        'createdat': 'today..'
      }
    ];

当 phone['numbers'] 包含项目时,每个对象匹配/替换项目的列表。

您可以使用两个forEach来获得此结果,如下所示:

    List finallist = [];

    listofnumbers.forEach((element) {
      mapofobjects.forEach((e) => {
            if (e['phone']['numbers'].contains(element))
              finallist.add(e)
          });
    });
   print(finallist.length.toString());

结果是: 2

你可以这样做:

final finalList = [
  ...mapofobjects.where((dynamic object) =>
      object['phone']['numbers'].any((phone) => listofnumbers.contains(phone)))
];

finalList.forEach(print);
// {name: Mary Doe, phone: {numbers: [03933, 39939], verified: true}, uid: 1BDNDD, createdat: today..}
// {name: Vincin Doe, phone: {numbers: [01225, 59939], verified: true}, uid: XBDNDD, createdat: today..}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM