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.some()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julio de 2015.
El métodosome() comprueba si al menos un elemento del array cumple con la condición implementada por la función proporcionada.
Nota:Este método devuelvefalse para cualquier condición puesta en un array vacío.
In this article
Pruébalo
const array = [1, 2, 3, 4, 5];// Checks whether an element is evenconst even = (element) => element % 2 === 0;console.log(array.some(even));// Expected output: trueSintaxis
arr.some(callback(element[, index[, array]])[, thisArg])
Parámetros
callbackFunción que verifica cada elemento, toma tres argumentos:_
element_ : El elemento actual siendo procesado en el array.indexOpcionalEl índice del elemento del array que se está procesando.
arrayOpcionalEl array sobre el que ha sido llamada la función
some().
thisArgOpcionalValor a usar como
thiscuando se ejecutecallback.
Valor devuelto
true si la funcióncallback devuelve un valortruthy para cualquier elemento del array; en caso contrario,false.
Descripción
some() ejecuta la funcióncallback una vez por cada elemento presente en el array hasta que encuentre uno dondecallback retorna un valor verdadero (true). Si se encuentra dicho elemento,some() retornatrue inmediatamente. Si no,some() retornafalse.callback es invocada sólo para los índices del array que tienen valores asignados; no es invocada para índices que han sido borrados o a los que nunca se les han asignado valores.
callback es invocada con tres argumentos: el valor del elemento, el índice del elemento, y el objeto array sobre el que se itera.
Si se indica un parámetrothisArg asome(), se pasará acallback cuando es invocada, para usar como valorthis. Si no, el valorundefined será pasado para usar como valorthis. El valorthis value observable porcallback se determina de acuerdo alas reglas habituales para determinar elthis visible por una función.
some() no modifica el array con el cual fue llamada.
El rango de elementos procesados porsome() es configurado antes de la primera invocación decallback. Los elementos anexados al array luego de que comience la llamada asome() no serán visitados porcallback. Si un elemento existente y no visitado del array es alterado porcallback, su valor pasado alcallback será el valor al momento quesome() visita el índice del elemento; los elementos borrados no son visitados.
Ejemplos
>Verificando el valor de los elementos de un array
El siguiente ejemplo verifica si algún elemento del array es mayor a 10.
function isBiggerThan10(element, index, array) { return element > 10;}[2, 5, 8, 1, 4].some(isBiggerThan10); // false[12, 5, 8, 1, 4].some(isBiggerThan10); // trueVerificando los elementos de un array usando funciones flecha
Las funciones flecha (Arrow functions) brindan una sintáxis más corta para el mismo test.
[2, 5, 8, 1, 4].some((elem) => elem > 10); // false[12, 5, 8, 1, 4].some((elem) => elem > 10); // trueComprobando si un elemento existe en un array
Para imitar la función del métodoincludes(), esta función personalizada devuelvetrue si el elemento existe en el array:
var fruits = ["apple", "banana", "mango", "guava"];function checkAvailability(arr, val) { return arr.some(function (arrVal) { return val === arrVal; });}checkAvailability(fruits, "kela"); // falsecheckAvailability(fruits, "banana"); // trueComprobando si un elemento existe en un array con funciones flecha
var fruits = ["apple", "banana", "mango", "guava"];function checkAvailability(arr, val) { return arr.some((arrVal) => val === arrVal);}checkAvailability(fruits, "kela"); // falsecheckAvailability(fruits, "banana"); // trueConvirtiendo cualquier valor a Boolean
var TRUTHY_VALUES = [true, "true", 1];function getBoolean(value) { "use strict"; if (typeof value === "string") { value = value.toLowerCase().trim(); } return TRUTHY_VALUES.some(function (t) { return t === value; });}getBoolean(false); // falsegetBoolean("false"); // falsegetBoolean(1); // truegetBoolean("true"); // truePolyfill
some() fue agregado al estándar ECMA-262 en la 5ta edición; por ello, puede no estar presente en todas las implementaciones del estándar. Puedes trabajar sobre esto insertando el siguiente código al comienzo de tus scripts, permitiendo el uso desome() en implementaciones que no tienen soporte nativo. Este algoritmo es exactamente el mismo especificado en ECMA-262, 5ta edición, asumiendo queObject yTypeError tienen sus valores originales y quefun.call evalúa el valor original deFunction.prototype.call().
// Pasos de producción de ECMA-262, Edición 5, 15.4.4.17// Referencia: http://es5.github.io/#x15.4.4.17if (!Array.prototype.some) { Array.prototype.some = function (fun /*, thisArg*/) { "use strict"; if (this == null) { throw new TypeError("Array.prototype.some called on null or undefined"); } if (typeof fun !== "function") { throw new TypeError(); } var t = Object(this); var len = t.length >>> 0; var thisArg = arguments.length >= 2 ? arguments[1] : void 0; for (var i = 0; i < len; i++) { if (i in t && fun.call(thisArg, t[i], i, t)) { return true; } } return false; };}Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-array.prototype.some> |