[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Array/filter [Back]  [Original]

Array : mthode filter() - JavaScript | MDN

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 English Always switch to English

Array : mthode filter()

Baseline Large disponibilit

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 mthode filter() des instances de Array cre une copie superficielle d'une portion d'un tableau donn, filtre pour ne contenir que les lments du tableau d'origine qui passent le test implment par la fonction fournie.

Dans cet article

Exemple interactif

const words = ["pulvriser", "lite", "exubrant", "destruction", "prsent"];

const result = words.filter((word) => word.length > 6);

console.log(result);
// Rsultat attendu : Array ["exubrant", "destruction", "prsent"]

Syntaxe

js
filter(callbackFn)
filter(callbackFn, thisArg)

Paramtres

callbackFn

Une fonction excuter pour chaque lment du tableau. Elle doit retourner une valeur vraie pour conserver l'lment dans le tableau rsultant, et une valeur fausse sinon. La fonction est appele avec les arguments suivants :

element

L'lment courant trait dans le tableau.

index

L'indice de l'lment courant trait dans le tableau.

array

Le tableau sur lequel filter() a t appele.

thisArg Facultatif

Valeur utiliser comme this lors de l'excution de callbackFn. Voir mthodes itratives.

Valeur de retour

Une copie superficielle du tableau donn contenant uniquement les lments qui passent le test. Si aucun lment ne passe le test, un tableau vide est renvoy.

Description

La mthode filter() est une mthode itrative. Elle appelle la fonction callbackFn fournie une fois pour chaque lment d'un tableau, et construit un nouveau tableau contenant toutes les valeurs pour lesquelles callbackFn retourne une valeur vraie. Les lments du tableau qui ne passent pas le test de callbackFn ne sont pas inclus dans le nouveau tableau. Consultez la section mthodes itratives pour plus d'informations sur le fonctionnement gnral de ces mthodes.

callbackFn n'est appele que pour les indices du tableau qui ont une valeur assigne. Elle n'est pas appele pour les cases vides dans les tableaux creux.

La mthode filter() est gnrique. Elle attend seulement que la valeur de this possde une proprit length et des proprits cl entire.

Exemples

Filtrer toutes les petites valeurs

L'exemple suivant utilise filter() pour crer un tableau filtr dans lequel tous les lments dont la valeur est infrieure 10 ont t retirs.

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'implmentation de estPremier() est uniquement des fins de dmonstration. Pour une application relle, il serait prfrable d'utiliser un algorithme fortement mmos comme le Crible d'ratosthne pour viter les calculs rpts.

Filtrer les objets invalides d'un tableau d'objets

L'exemple suivant utilise filter() pour crer un tableau filtr contenant tous les objets sont diffrents de zro, et des id numriques.

js
const arr = [
  { id: 15 },
  { id: -1 },
  { id: 0 },
  { id: 3 },
  { id: 12.2 },
  {},
  { id: null },
  { id: NaN },
  { id: "undefined" },
];

let entresInvalides = 0;

function filtrerParID(item) {
  if (Number.isFinite(item.id) && item.id !== 0) {
    return true;
  }
  entresInvalides++;
  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'entres invalides =", entresInvalides);
// Nombre d'entres invalides = 5

Recherche dans un tableau

L'exemple suivant utilise filter() pour filtrer le contenu d'un tableau selon un critre de recherche.

js
const fruits = ["pomme", "banane", "raisin", "mangue", "orange"];

/**
 * Filtrer les lments du tableau selon un critre de recherche (requte)
 */
function filtrerlments(arr, requte) {
  return arr.filter((el) => el.toLowerCase().includes(requte.toLowerCase()));
}

console.log(filtrerlments(fruits, "po")); // ['pomme']
console.log(filtrerlments(fruits, "an")); // ['banane', 'mangue', 'orange']

Utiliser le troisime argument de callbackFn

L'argument array est utile si vous souhaitez accder un autre lment du tableau, en particulier lorsque vous n'avez pas de variable existante qui fait rfrence au tableau. L'exemple suivant utilise d'abord map() pour extraire l'identifiant numrique de chaque nom puis utilise filter() pour slectionner ceux qui sont suprieurs 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'accder
    // au tableau intermdiaire 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'argument array n'est pas le tableau en cours de construction il n'est pas possible d'accder au tableau en cours de construction depuis la fonction de rappel.

Utiliser filter() 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]

Appeler filter() sur des objets qui ne sont pas des tableaux

La mthode filter() lit la proprit length de this puis accde chaque proprit dont la cl est un entier non ngatif infrieur 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' ]

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-array.prototype.filter

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page