Как проверить, существует ли строка уже в списке?

# #firebase #flutter #dart #google-cloud-firestore

Вопрос:

Я пытаюсь создать список строк, содержащих массив из 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']);
      allVideoHastags.addAll(videoHastags);
    }
    _allResults = allVideoHastags;
     searchResults();
   
    return allVideoHastags;
  }
 

Поэтому ,прежде чем добавлять хэштеги в список, я хочу проверить, существует ли он уже в списке строк .Надеюсь, кто-нибудь сможет помочь .Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий

Комментарии:

1. Это не ответ на конкретный вопрос, но вы, возможно, захотите рассмотреть возможность использования объединения массивов для хранения хэштегов, что предотвратит хранение дубликатов. Видишь firebase.google.com/docs/firestore/manage-data/…

Ответ №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 )});