Wyszukiwanie na liście: indexOf
Część sekcji Logika i przepływ sterowania ścieżki Dart w Coddy. Lekcja 6 z 65.
Gdy chcesz znaleźć miejsce, w którym znajduje się określony element na liście, Dart udostępnia metodę indexOf(). Ta metoda przeszukuje listę i zwraca indeks pierwszego wystąpienia szukanego elementu.
Metoda indexOf() przyjmuje jako parametr element, który chcesz znaleźć, i zwraca liczbę całkowitą. Jeśli element znajduje się na liście, zwraca jego indeks (liczony od 0). Jeśli element nie zostanie znaleziony, zwraca -1.
List<String> fruits = ['apple', 'banana', 'orange', 'banana'];
int appleIndex = fruits.indexOf('apple'); // 0
int bananaIndex = fruits.indexOf('banana'); // 1 (pierwsze wystąpienie)
int grapeIndex = fruits.indexOf('grape'); // -1 (nie znaleziono)Ta metoda jest szczególnie przydatna, gdy musisz znać pozycję elementu przed wykonaniem operacji, takich jak wstawianie lub usuwanie w określonych miejscach. Pamiętaj, że indexOf() znajduje tylko pierwsze dopasowanie, więc jeśli element występuje wiele razy, otrzymasz indeks jego pierwszego wystąpienia.
Wyzwanie
ŁatwyUtwórz program, który zarządza systemem wyszukiwania książek w bibliotece, znajdując położenie konkretnych książek na półkach. Twój program powinien:
- Wczytać ciąg znaków reprezentujący nazwę sekcji biblioteki
- Wczytać wiele ciągów znaków reprezentujących tytuły książek na półce (wczytywanie zakończy się, gdy otrzymasz pusty ciąg znaków)
- Wczytać ciąg znaków reprezentujący tytuł książki, której należy szukać
- Użyć metody
indexOf(), aby znaleźć pozycję szukanej książki - Wyświetlić wyniki wyszukiwania w dokładnie takim formacie, jak pokazano poniżej
Na przykład, jeśli sekcja biblioteki to "Science Fiction", książki to "Dune", "Foundation", "Neuromancer", "Foundation", "Ender's Game", a szukaną książką jest "Foundation", Twój program powinien wyświetlić:
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 successfullyJeśli sekcja biblioteki to "Mystery", książki to "Sherlock Holmes", "Agatha Christie", "The Maltese Falcon", a szukaną książką jest "Gone Girl", Twój program powinien wyświetlić:
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 availableTwój program musi używać metody indexOf(), aby wyszukać książkę. Gdy książka zostanie znaleziona (position >= 0), wyświetl "Book located successfully". Gdy książka nie zostanie znaleziona (position = -1), wyświetl "Book not available". Pamiętaj, że jeśli książka występuje kilka razy, metoda indexOf() zwraca pozycję jej pierwszego wystąpienia.
Spróbuj swoich sił
import 'dart:io';
void main() {
// Wczytaj nazwę działu biblioteki
String? section = stdin.readLineSync();
// Wczytuj tytuły książek aż do napotkania pustego ciągu znaków
List<String> books = [];
String? book;
while ((book = stdin.readLineSync()) != null && book!.isNotEmpty) {
books.add(book);
}
// Wczytaj tytuł książki do wyszukania
String? searchBook = stdin.readLineSync();
// TODO: Napisz swój kod poniżej
// Użyj metody indexOf(), aby znaleźć pozycję książki
// Wyświetl wyniki w wymaganym formacie
print('Library Section: $section');
print('Books on shelf: $books');
print('Searching for: $searchBook');
// Wyświetl pozycję i status na podstawie wyników wyszukiwania
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ sterowania
1Zaawansowana manipulacja listami
Właściwości listy: first i lastStan listy: isEmpty i isNotEmpOdwracanie listyDodawanie do listy: insertUsuwanie z listy: removeWhereWyszukiwanie na liście: indexOfSortowanie listyMieszanie elementów listyPodsumowanie – Organizator listy4Zaawansowane operacje na mapach
Iterowanie po mapieSprawdzanie kluczy i wartościWłaściwości mapy: klucze i wartościDodawanie warunkowe: putIfAbsentUsuwanie wpisów z mapyZagnieżdżone mapyPodsumowanie – aktualizacja stanu magazynowego2Operacje funkcyjne na listach
Przekształcanie za pomocą 'map'Filtrowanie za pomocą 'where'Używanie '.toList()'Sprawdzanie warunków za pomocą 'any'Warunki z użyciem 'every'Wyszukiwanie za pomocą 'firstWhere'Podsumowanie — filtrowanie danych5Projekt: Kalkulator koszyka zakupowego
Konfiguracja projektuDodawanie produktów do koszyka3Zbiory
Czym jest zbiór?Tworzenie zbioruDodawanie i usuwanie elementów ze zbiorówSprawdzanie, czy element znajduje się w zbiorzeKonwersja listy na zbiórSuma zbiorówCzęść wspólna zbiorówRóżnica zbiorówPodsumowanie — unikalna lista gościPoćwicz samodzielnie: Kompilator Dart online