Rechercher dans une liste : indexOf
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 6 sur 65.
Lorsque vous avez besoin de trouver où un élément spécifique est situé dans une liste, Dart fournit la méthode indexOf(). Cette méthode parcourt la liste et renvoie la position de l'index de la première occurrence de l'élément que vous recherchez.
La méthode indexOf() prend l'élément que vous souhaitez trouver comme paramètre et renvoie un entier. Si l'élément existe dans la liste, elle renvoie la position de l'index (en commençant par 0). Si l'élément n'est pas trouvé, elle renvoie -1.
List<String> fruits = ['apple', 'banana', 'orange', 'banana'];
int appleIndex = fruits.indexOf('apple'); // 0
int bananaIndex = fruits.indexOf('banana'); // 1 (première occurrence)
int grapeIndex = fruits.indexOf('grape'); // -1 (non trouvé)Cette méthode est particulièrement utile lorsque vous avez besoin de connaître la position d'un élément avant d'effectuer des opérations telles que l'insertion ou la suppression à des emplacements spécifiques. N'oubliez pas que indexOf() ne trouve que la première correspondance, donc si un élément apparaît plusieurs fois, vous obtiendrez l'index de sa première occurrence.
Défi
FacileCréez un programme qui gère un système de recherche de livres de bibliothèque en trouvant l'emplacement de livres spécifiques sur les étagères. Votre programme doit :
- Lire une entrée de type chaîne de caractères représentant le nom de la section de la bibliothèque
- Lire plusieurs entrées de type chaîne de caractères représentant les titres des livres sur l'étagère (la saisie se terminera lorsque vous recevrez une chaîne vide)
- Lire une entrée de type chaîne de caractères représentant le titre du livre à rechercher
- Utiliser la méthode
indexOf()pour trouver la position du livre demandé - Afficher les résultats de la recherche exactement au format indiqué ci-dessous
Par exemple, si la section de la bibliothèque est "Science Fiction", que les livres sont "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game", et que le livre recherché est "Foundation", votre programme doit afficher :
Library Section: Science Fiction
Books on shelf: [Dune, Foundation, Neuromancer, Foundation, Ender's Game]
Searching for: Foundation
Book found at position: 1
Status: Book located successfullySi la section de la bibliothèque est "Mystery", que les livres sont "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon", et que le livre recherché est "Gone Girl", votre programme doit afficher :
Library Section: Mystery
Books on shelf: [Sherlock Holmes, Agatha Christie, The Maltese Falcon]
Searching for: Gone Girl
Book found at position: -1
Status: Book not availableVotre programme doit utiliser la méthode indexOf() pour rechercher le livre. Lorsque le livre est trouvé (position >= 0), affichez "Book located successfully". Lorsque le livre n'est pas trouvé (position = -1), affichez "Book not available". Rappelez-vous que indexOf() renvoie la position de la première occurrence si le livre apparaît plusieurs fois.
Aide-mémoire
Utilisez indexOf() pour trouver la position d'un élément dans une liste :
List<String> fruits = ['apple', 'banana', 'orange', 'banana'];
int appleIndex = fruits.indexOf('apple'); // 0
int bananaIndex = fruits.indexOf('banana'); // 1 (première occurrence)
int grapeIndex = fruits.indexOf('grape'); // -1 (non trouvé)La méthode renvoie la position de l'index (en commençant par 0) s'il est trouvé, ou -1 si l'élément n'existe pas. Elle ne trouve que la première occurrence des éléments en double.
Essayez vous-même
import 'dart:io';
void main() {
// Lire le nom de la section de la bibliothèque
String? section = stdin.readLineSync();
// Lire les titres des livres jusqu'à une chaîne vide
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// Lire le livre à rechercher
String? searchBook = stdin.readLineSync();
// TODO: Écrivez votre code ci-dessous
// Utilisez la méthode indexOf() pour trouver la position du livre
// Afficher les résultats au format requis
print('Library Section: $section');
print('Books on shelf: $books');
print('Searching for: $searchBook');
// Afficher la position et le statut en fonction de vos résultats de recherche
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques