Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.

Array.prototype.filter()

BaselineWidely available

El métodofilter() crea un nuevo array con todos los elementos que cumplan la condición implementada por la función dada.

Pruébalo

const words = ["spray", "elite", "exuberant", "destruction", "present"];const result = words.filter((word) => word.length > 6);console.log(result);// Expected output: Array ["exuberant", "destruction", "present"]

Sintaxis

var newArray = arr.filter(callback(currentValue[, index[, array]])[, thisArg])

Parámetros

callback

Función quecomprueba cada elemento del array para ver si cumple la condición (también llamada predicado). Retornatrue si el elemento la cumple o en caso contrario retornaráfalse. Acepta tres parámetros:

currentValue

El elemento actual del array que está siendo procesado.

indexOpcional

El índice del elemento actual del array que está siendo procesado.

arrayOpcional

El array sobre el que se ha llamadofilter.

thisArgOpcional

Opcional. Valor a utilizar comothis cuando se ejecutacallback.

Valor devuelto

Un nuevo array con los elementos que cumplen la condición. Si ningún elemento cumple la condición, se devolverá un array vacío.

Descripción

filter() llama a la funcióncallback sobre cada elemento del array, y construye un nuevo array con todos los valores para los cualescallback devuelve un valor verdadero.callback es invocada sólo para índices del array que tengan un valor asignado. No se invoca sobre índices que hayan sido borrados o a los que no se les haya asignado algún valor. Los elementos del array que no cumplan la condicióncallback simplemente los salta, y no son incluidos en el nuevo array.

callback se invoca con tres argumentos:

  1. El valor de cada elemento
  2. El índice del elemento
  3. El objeto Array que se está recorriendo

Si se proporciona un parámetrothisArg afilter(), este será pasado acallback cuando sea invocado, para usarlo como valorthis. De lo contrario, se pasará el valorundefined como valorthis. El valorthis dentro delcallback se determina conforme a laslas normas habituales para determinar elthis visto por una función.

filter() no hace mutar el array sobre el cual es llamado.

El rango de elementos procesados porfilter() se establece antes de la primera invocación decallback. Los elementos que se añadan al array después de que comience la llamada afilter() no serán visitados porcallback. Si se modifica o elimina un elemento existente del array, cuando pase su valor acallback será el que tenga cuandofilter() lo recorra; los elementos que son eliminados no son recorridos.

Ejemplos

Filtrando todos los valores pequeños

El siguiente ejemplo usafilter() para crear un array filtrado que excluye todos los elementos con valores inferiores a 10.

js
function esSuficientementeGrande(elemento) {  return elemento >= 10;}var filtrados = [12, 5, 8, 130, 44].filter(esSuficientementeGrande);// filtrados es [12, 130, 44]

Filtrando entradas inválidas desde un JSON

El siguiente ejemplo empleafilter() para crear un json filtrado con todos lo elementos que tengan id numérico distinto de cero.

js
var arr = [  { id: 15 },  { id: -1 },  { id: 0 },  { id: 3 },  { id: 12.2 },  {},  { id: null },  { id: NaN },  { id: "undefined" },];var entradasInvalidas = 0;// Si el elemento tiene un atributo id, y su valor correspondiente es un numero// Y no es el valor NaN, entonces es una entrada válidafunction filtrarPorID(obj) {  if ("id" in obj && typeof obj.id === "number" && !isNaN(obj.id)) {    return true;  } else {    entradasInvalidas++;    return false;  }}var arrPorID = arr.filter(filtrarPorID);console.log("Array Filtrado\n", arrPorID);// [{ id: 15 }, { id: -1 }, { id: 0 }, { id: 3 }, { id: 12.2 }]console.log("Número de Entradas Invalidas = ", entradasInvalidas);// 4

Búsqueda en el arreglo

El siguiente ejemplo emplea filter() para filtrar el contendio de un arreglo en función de un criterio de búsqueda.

js
var fruits = ["apple", "banana", "grapes", "mango", "orange"];/** * Filtra la matríz en función de un criterio de búsqueda (query) */function filterItems(query) {  return fruits.filter(function (el) {    return el.toLowerCase().indexOf(query.toLowerCase()) > -1;  });}console.log(filterItems("ap")); // ['apple', 'grapes']console.log(filterItems("an")); // ['banana', 'mango', 'orange']

Implementación en ES2015

js
const fruits = ["apple", "banana", "grapes", "mango", "orange"];/** * Filtra la matríz en función de un criterio de búsqueda (query) */const filterItems = (query) => {  return fruits.filter(    (el) => el.toLowerCase().indexOf(query.toLowerCase()) > -1,  );};console.log(filterItems("ap")); // ['apple', 'grapes']console.log(filterItems("an")); // ['banana', 'mango', 'orange']

Polyfill

filter() se añadió a la norma ECMA-262 en la 5ta edición; como tal puede no estar presente en todas las implementaciones de la norma. Puedes sobrellevarlo insertando el siguiente código al comienzo de su programa, para permitir el uso defilter() en implementaciones de ECMA-262 que no lo soporten de forma nativa. Este algoritmo es exactamente el especificado en ECMA-262, 5ta edición, supone quefn.call evalua al valor original deFunction.prototype.call, y queArray.prototype.push tiene su valor original.

if (!Array.prototype.filter){  Array.prototype.filter = function(func, thisArg) {    'use strict';    if ( ! ((typeof func === 'Function' || typeof func === 'function') && this) )        throw new TypeError();    var len = this.length >>> 0,        res = new Array(len), // preallocate array        t = this, c = 0, i = -1;    var kValue;    if (thisArg === undefined){      while (++i !== len){        // checks to see if the key was set        if (i in this){          kValue = t[i]; // in case t is changed in callback          if (func(t[i], i, t)){            res[c++] = kValue;          }        }      }    }    else{      while (++i !== len){        // checks to see if the key was set        if (i in this){          kValue = t[i];          if (func.call(thisArg, t[i], i, t)){            res[c++] = kValue;          }        }      }    }    res.length = c; // shrink down array to proper size    return res;  };}

Especificaciones

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

Compatibilidad con navegadores

Ver también

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp