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.includes()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since agosto de 2016.
El métodoincludes() determina si una matriz incluye un determinado elemento, devuelvetrue ofalse según corresponda.
In this article
Pruébalo
const array1 = [1, 2, 3];console.log(array1.includes(2));// Expected output: trueconst pets = ["cat", "dog", "bat"];console.log(pets.includes("cat"));// Expected output: trueconsole.log(pets.includes("at"));// Expected output: falseSintaxis
arr.includes(searchElement[, fromIndex])
Parámetros
valueToFindEl valor a buscar.
Nota:Al comparar cadenas de texto y caracteres,
includes()distingue mayúsculas y minúsculas.fromIndexOpcionalPosición en la matriz en la cuál se debe comenzar a buscar
valueToFind; el primer caracter a buscar se encuentra enfromIndex. Un valor negativo inicia la búsqueda desde array.length + fromIndex en adelante. El valor por defecto es 0.
Valor devuelto
UnBoolean que estrue si el valorvalueToFind se encuentra dentro de la matriz (o la parte de la matriz indicada por el índicefromIndex, si se especifica). Todos los valores de cero se consideran iguales independientemente del signo (es decir, -0 se considera igual a 0 y +0), perofalse no se considera igual a 0.
Nota:Técnicamente hablando,include() usa el algoritmosameValueZero para determinar si se encuentra el elemento dado
Ejemplos
[1, 2, 3].includes(2); // true[1, 2, 3].includes(4); // false[1, 2, 3].includes(3, 3); // false[1, 2, 3].includes(3, -1); // true[1, 2, NaN].includes(NaN); // truefromIndex es mayor o igual que la longitud de la matriz
SifromIndex es mayor o igual que la longitud de la matriz, se devuelvefalse. No se buscará en la matriz.
var arr = ["a", "b", "c"];arr.includes("c", 3); // falsearr.includes("c", 100); // falseEl índice calculado es menor que 0
SifromIndex es negativo, el índice calculado se calcula para usarse como una posición en la matriz en la cual comenzar a buscarsearchElement. Si el índice calculado es menor que 0, se buscará la matriz completa.
// la longitud de la matriz es 3// fromIndex es -100// el índice calculado es 3 + (-100) = -97var arr = ["a", "b", "c"];arr.includes("a", -100); // truearr.includes("b", -100); // truearr.includes("c", -100); // trueincludes() utilizado como método genérico
El métodoincludes() es intencionalmente genérico. No requiere que este valor sea un objeto Array, por lo que se puede aplicar a otros tipos de objetos (por ejemplo, objetos tipo array). El siguiente ejemplo ilustra el métodoincludes() llamado en el objeto de argumentos de la función.
(function () { console.log([].includes.call(arguments, "a")); // true console.log([].includes.call(arguments, "d")); // false})("a", "b", "c");Polyfill
// https://tc39.github.io/ecma262/#sec-array.prototype.includesif (!Array.prototype.includes) { Object.defineProperty(Array.prototype, "includes", { value: function (searchElement, fromIndex) { if (this == null) { throw new TypeError('"this" es null o no está definido'); } // 1. Dejar que O sea ? ToObject(this value). var o = Object(this); // 2. Dejar que len sea ? ToLength(? Get(O, "length")). var len = o.length >>> 0; // 3. Si len es 0, devuelve false. if (len === 0) { return false; } // 4. Dejar que n sea ? ToInteger(fromIndex). // (Si fromIndex no está definido, este paso produce el valor 0.) var n = fromIndex | 0; // 5. Si n ≥ 0, entonces // a. Dejar que k sea n. // 6. Else n < 0, // a. Dejar que k sea len + n. // b. Si k < 0, Dejar que k sea 0. var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0); function sameValueZero(x, y) { return ( x === y || (typeof x === "number" && typeof y === "number" && isNaN(x) && isNaN(y)) ); } // 7. Repite, mientras k < len while (k < len) { // a. Dejar que elementK sea el resultado de ? Get(O, ! ToString(k)). // b. Si SameValueZero(searchElement, elementK) es true, devuelve true. if (sameValueZero(o[k], searchElement)) { return true; } // c. Incrementa k por 1. k++; } // 8. Devuelve false return false; }, });}Si necesita admitir motores de JavaScript realmente obsoletos que no son compatibles conObject.defineProperty, es mejor no rellenar los métodosArray.prototype, ya que no puede hacerlos no enumerables.
Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.includes> |