Comprobar si un elemento está presente en un array
La función que estoy utilizando ahora para comprobar esto es la siguiente:
function inArray(needle,haystack)
{
var count=haystack.length;
for(var i=0;i<count;i++)
{
if(haystack[i]===needle){return true;}
}
return false;
}
Funciona. Lo que estoy buscando es si hay una mejor manera de hacer esto.
504
3
Código:
Ejecución:
Actualización (2017):
En los navegadores modernos que siguen el estándar ECMAScript 2016 (ES7), se puede utilizar la función Array.prototype.includes, que facilita la comprobación de la presencia de un elemento en un array:
-- begin snippet: js hide: false console: true babel: false -->
Sólo tiene que utilizar
indexOf
:Si quiere dar soporte a los antiguos exploradores de Internet (< IE9), tendrá que incluir su código actual como una solución.
A menos que su lista esté ordenada, necesita comparar cada valor con la aguja. Por lo tanto, tanto tu solución como
indexOf
tendrán que ejecutarn/2
comparaciones en promedio. Sin embargo, comoindexOf
es un método incorporado, puede utilizar optimizaciones adicionales y será ligeramente más rápido en la práctica. Ten en cuenta que a menos que tu aplicación busque en listas con extrema frecuencia (digamos 1000 veces por segundo) o las listas sean enormes (digamos 100k entradas), la diferencia de velocidad no importará.Puedes utilizar la función _contains de la biblioteca underscore.js para conseguirlo: