Comment trouver l'indice d'un élément dans un tableau Swift ? Tutoriel pas à pas

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi « Trouver l'indice » est une base à connaître par cœur

\n\n

Imaginez : vous développez une application iOS. Vous avez un tableau de tâches, et l'utilisateur souhaite supprimer une tâche spécifique par son nom. Ou peut-être cherchez-vous la position d'un élément pour le mettre à jour dans la liste. Dans les deux cas, vous avez besoin de la même chose — trouver l'indice d'un élément dans un tableau Swift. Cette tâche est si courante que la question sur Stack Overflow a recueilli des milliers de vues. Et ce n'est pas un hasard : la recherche d'indice est l'un des scénarios les plus fréquents dans le développement quotidien.

\n\n

Dans ce tutoriel, nous allons passer en revue toutes les façons de trouver l'indice d'un élément en Swift : du simple firstIndex(of:) à la recherche avancée avec des fermetures. Vous apprendrez à travailler avec des tableaux de chaînes, de nombres et d'objets personnalisés. C'est parti !

\n\n

1. Préparation : Qu'est-ce qu'un indice dans un tableau Swift ?

\n\n

Avant de plonger dans le code, rappelons les bases. Un tableau en Swift est une collection ordonnée d'éléments. Chaque élément a son indice — un nombre entier commençant à 0. Le premier élément a l'indice 0, le second 1, et ainsi de suite.

\n\n
let fruits = ["🍎 Pomme", "🍌 Banane", "🍒 Cerise"]\n// Indices :         0           1           2\n
\n\n

Lorsque nous disons « trouver l'indice d'un élément », nous voulons dire : « Retourne-moi le numéro de la position à laquelle se trouve cet élément ». En Swift, il existe plusieurs méthodes élégantes pour cela. Passons-les en revue dans l'ordre.

\n\n

2. La méthode classique : firstIndex(of:) — le chemin le plus simple

\n\n

Depuis Swift 4.2, la méthode firstIndex(of:) est devenue la méthode standard pour trouver l'indice d'un élément. Elle retourne une valeur optionnelle Int? — si l'élément est trouvé, vous obtenez l'indice ; sinon — nil.

\n\n

Exemple avec un tableau de chaînes

\n\n
let fruits = ["Pomme", "Banane", "Cerise", "Datte"]\n\nif let index = fruits.firstIndex(of: "Cerise") {\n    print("Indice de 'Cerise' : \\(index)") // Affiche : 2\n} else {\n    print("Élément non trouvé")\n}\n
\n\n

Notez que firstIndex(of:) recherche la première occurrence. Si le tableau contient des doublons, il retournera uniquement le premier indice.

\n\n

Exemple avec un tableau de nombres

\n\n
let numbers = [10, 20, 30, 40, 50]\n\nif let position = numbers.firstIndex(of: 30) {\n    print("Le nombre 30 se trouve à la position \\(position)") // 2\n}\n
\n\n

Important : Cette méthode fonctionne uniquement avec les types qui sont conformes au protocole Equatable. Tous les types standard (Int, String, Double, Bool) y sont déjà conformes.

\n\n

3. Recherche par condition : index(where:) — une flexibilité sans limites

\n\n

Et si vous avez besoin de trouver l'indice non pas par une valeur exacte, mais par une condition ? Par exemple, trouver le premier élément supérieur à 25, ou une chaîne qui commence par une certaine lettre. Pour cela, il existe la méthode firstIndex(where:) (auparavant index(where:)).

\n\n

Syntaxe avec une fermeture

\n\n
let scores = [15, 22, 37, 41, 19]\n\nif let index = scores.firstIndex(where: { $0 > 25 }) {\n    print("Le premier élément supérieur à 25 se trouve à l'indice \\(index)") // 2 (valeur 37)\n}\n
\n\n

Recherche par propriété d'objet

\n\n

Supposons que vous ayez un tableau de structures personnalisées :

\n\n
struct User {\n    let name: String\n    let age: Int\n}\n\nlet users = [\n    User(name: "Anna", age: 25),\n    User(name: "Boris", age: 30),\n    User(name: "Victor", age: 22)\n]\n\n// Trouvons l'indice de l'utilisateur nommé "Boris"\nif let index = users.firstIndex(where: { $0.name == "Boris" }) {\n    print("Boris se trouve à l'indice \\(index)") // 1\n}\n
\n\n

Cette approche est incroyablement puissante. Vous pouvez utiliser n'importe quelle condition booléenne : vérifier plusieurs propriétés, utiliser des expressions régulières ou même appeler des fonctions à l'intérieur de la fermeture.

\n\n

4. Gestion des doublons : comment trouver tous les indices

\n\n

M

Blogs

Book Recommendations