Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence JavaScript
  4. Objets natifs standards
  5. Array
  6. filter()

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

Array : méthode filter()

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

La méthodefilter() des instances deArray crée unecopie superficielle d'une portion d'un tableau donné, filtrée pour ne contenir que les éléments du tableau d'origine qui passent le test implémenté par la fonction fournie.

Exemple interactif

const words = ["pulvériser", "élite", "exubérant", "destruction", "présent"];const result = words.filter((word) => word.length > 6);console.log(result);// Résultat attendu : Array ["exubérant", "destruction", "présent"]

Syntaxe

js
filter(callbackFn)filter(callbackFn, thisArg)

Paramètres

callbackFn

Une fonction à exécuter pour chaque élément du tableau. Elle doit retourner une valeurvraie pour conserver l'élément dans le tableau résultant, et une valeurfausse sinon. La fonction est appelée avec les arguments suivants :

element

L'élément courant traité dans le tableau.

index

L'indice de l'élément courant traité dans le tableau.

array

Le tableau sur lequelfilter() a été appelée.

thisArgFacultatif

Valeur à utiliser commethis lors de l'exécution decallbackFn. Voirméthodes itératives.

Valeur de retour

Unecopie superficielle du tableau donné contenant uniquement les éléments qui passent le test. Si aucun élément ne passe le test, un tableau vide est renvoyé.

Description

La méthodefilter() est uneméthode itérative. Elle appelle la fonctioncallbackFn fournie une fois pour chaque élément d'un tableau, et construit un nouveau tableau contenant toutes les valeurs pour lesquellescallbackFn retourne une valeurvraie. Les éléments du tableau qui ne passent pas le test decallbackFn ne sont pas inclus dans le nouveau tableau. Consultez la sectionméthodes itératives pour plus d'informations sur le fonctionnement général de ces méthodes.

callbackFn n'est appelée que pour les indices du tableau qui ont une valeur assignée. Elle n'est pas appelée pour les cases vides dans lestableaux creux.

La méthodefilter() estgénérique. Elle attend seulement que la valeur dethis possède une propriétélength et des propriétés à clé entière.

Exemples

Filtrer toutes les petites valeurs

L'exemple suivant utilisefilter() pour créer un tableau filtré dans lequel tous les éléments dont la valeur est inférieure à 10 ont été retirés.

js
function assezGrand(valeur) {  return valeur >= 10;}const filtré = [12, 5, 8, 130, 44].filter(assezGrand);// filtré vaut [12, 130, 44]

Trouver tous les nombres premiers dans un tableau

L'exemple suivant retourne tous les nombres premiers du tableau :

js
const tableau = [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];function estPremier(n) {  if (n < 2) {    return false;  }  if (n % 2 === 0) {    return n === 2;  }  for (let facteur = 3; facteur * facteur <= n; facteur += 2) {    if (n % facteur === 0) {      return false;    }  }  return true;}console.log(tableau.filter(estPremier)); // [2, 3, 5, 7, 11, 13]

Note :L'implémentation deestPremier() est uniquement à des fins de démonstration. Pour une application réelle, il serait préférable d'utiliser un algorithme fortement mémoïsé comme leCrible d'Ératosthène pour éviter les calculs répétés.

Filtrer les entrées invalides d'un JSON

L'exemple suivant utilisefilter() pour créer un JSON filtré contenant tous les éléments dont l'id est numérique et non nul.

js
const arr = [  { id: 15 },  { id: -1 },  { id: 0 },  { id: 3 },  { id: 12.2 },  {},  { id: null },  { id: NaN },  { id: "undefined" },];let entréesInvalides = 0;function filtrerParID(item) {  if (Number.isFinite(item.id) && item.id !== 0) {    return true;  }  entréesInvalides++;  return false;}const arrByID = arr.filter(filtrerParID);console.log("Tableau filtré\n", arrByID);// Tableau filtré// [{ id: 15 }, { id: -1 }, { id: 3 }, { id: 12.2 }]console.log("Nombre d'entrées invalides =", entréesInvalides);// Nombre d'entrées invalides = 5

Recherche dans un tableau

L'exemple suivant utilisefilter() pour filtrer le contenu d'un tableau selon un critère de recherche.

js
const fruits = ["pomme", "banane", "raisin", "mangue", "orange"];/** * Filtrer les éléments du tableau selon un critère de recherche (requête) */function filtrerÉléments(arr, requête) {  return arr.filter((el) => el.toLowerCase().includes(requête.toLowerCase()));}console.log(filtrerÉléments(fruits, "po")); // ['pomme']console.log(filtrerÉléments(fruits, "an")); // ['banane', 'mangue', 'orange']

Utiliser le troisième argument decallbackFn

L'argumentarray est utile si vous souhaitez accéder à un autre élément du tableau, en particulier lorsque vous n'avez pas de variable existante qui fait référence au tableau. L'exemple suivant utilise d'abordmap() pour extraire l'identifiant numérique de chaque nom puis utilisefilter() pour sélectionner ceux qui sont supérieurs à leurs voisins.

js
const noms = ["JC63", "Bob132", "Ursula89", "Ben96"];const grandsIDs = noms  .map((nom) => parseInt(nom.match(/\d+/)[0], 10))  .filter((id, idx, arr) => {    // Sans l'argument arr, il n'y a pas de moyen simple d'accéder    // au tableau intermédiaire sans le stocker dans une variable.    if (idx > 0 && id <= arr[idx - 1]) return false;    if (idx < arr.length - 1 && id <= arr[idx + 1]) return false;    return true;  });console.log(grandsIDs); // [132, 96]

L'argumentarray n'estpas le tableau en cours de construction — il n'est pas possible d'accéder au tableau en cours de construction depuis la fonction de rappel.

Utiliserfilter() sur des tableaux creux

filter() ignore les cases vides.

js
console.log([1, , undefined].filter((x) => x === undefined)); // [undefined]console.log([1, , undefined].filter((x) => x !== 2)); // [1, undefined]

Appelerfilter() sur des objets qui ne sont pas des tableaux

La méthodefilter() lit la propriétélength dethis puis accède à chaque propriété dont la clé est un entier non négatif inférieur àlength.

js
const objetSimilaireTableau = {  length: 3,  0: "a",  1: "b",  2: "c",  3: "a", // ignoré par filter() car length vaut 3};console.log(  Array.prototype.filter.call(objetSimilaireTableau, (x) => x <= "b"),);// [ 'a', 'b' ]

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.filter

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp