【问题标题】:How to check if string already exists in list?如何检查字符串是否已存在于列表中?
【发布时间】:2021-04-23 12:36:27
【问题描述】:

我正在尝试创建一个包含 firebase 数组的字符串列表。这非常有效。但现在我想过滤一下列表。所以我想要的是一次添加 allhastags 。因此,如果一个主题标签存在两次,我只想将其放入他的列表中一次。这是我的代码


  Future<List<String>> getHashtags() async {
    List<String> allVideoHastags = [];

    QuerySnapshot snapshots =
        await FirebaseFirestore.instance.collection('videos').get();

    for (QueryDocumentSnapshot videoSnapshot in snapshots.docs) {
      List<String> videoHastags =
          List.from(videoSnapshot.data()['Hashtagsforallvideos']);
      allVideoHastags.addAll(videoHastags);
    }
    _allResults = allVideoHastags;
     searchResults();
   
    return allVideoHastags;
  }

所以在将主题标签添加到列表之前,我想检查它是否已经存在于字符串列表中。希望任何人都可以提供帮助。如果您需要更多信息,请发表评论

【问题讨论】:

标签: firebase flutter dart google-cloud-firestore


【解决方案1】:

只需遍历从 firebase 获得的主题标签,然后仅当它们尚未出现时才将它们添加到结果中:

Future<List<String>> getHashtags() async {
  List<String> allVideoHastags = [];

  QuerySnapshot snapshots =
      await FirebaseFirestore.instance.collection('videos').get();

  for (QueryDocumentSnapshot videoSnapshot in snapshots.docs) {
    List<String> videoHastags =
        List.from(videoSnapshot.data()['Hashtagsforallvideos']);

    videoHastags.forEach((element) {
      if(!allVideoHastags.contains(element)){
          allVideoHastags.add(element);
      }
    });
    
  }
  _allResults = allVideoHastags;
  searchResults();

  return allVideoHastags;
}

【讨论】:

    【解决方案2】:

    这将从列表中删除所有重复项

        _allResults = allVideoHastags.toSet().toList();
    
    

    【讨论】:

      【解决方案3】:
      YOUR_LIST.forEach((element) => if(element == "YOUR_STRING") {YOUR_NEW_LIST.add(element )});
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-24
        • 1970-01-01
        • 2017-02-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        相关资源
        最近更新 更多