Quelle est la méthode la plus concise et la plus efficace pour savoir si un tableau JavaScript contient une valeur ?
Voici la seule façon que je connaisse de le faire :
function contains(a, obj) {
for (var i = 0; i < a.length; i++) {
if (a[i] === obj) {
return true;
}
}
return false;
}
Existe-t-il une méthode plus efficace et plus concise pour réaliser cet objectif ?
Isaac
Juillet 5, 2023, 9:46
2
Les navigateurs modernes disposent de Array#includes
qui fait exactement cela et est largement supporté par tout le monde sauf IE :
console.log(['A', 'B', 'C'].includes('B')); // true
Vous pouvez également utiliser Array#indexOf
, qui est moins direct, mais qui ne nécessite pas de polyfills pour les navigateurs obsolètes.
console.log(['A', 'B', 'C'].indexOf('B') >= 0); // true
Michel
Juillet 5, 2023, 9:48
3
indexOf peut-être, mais il s’agit d’une « extension JavaScript de la norme ECMA-262 ; elle peut donc ne pas être présente dans d’autres implémentations de la norme ».
Exemple :
[1, 2, 3].indexOf(1) => 0
["alex", "bob", "ali"].indexOf("bob") => 1
[1, 2, 3].indexOf(4) => -1
Henri
Juillet 5, 2023, 9:54
4
Voici comment l’utiliser dans une condition IF:
function isInArray(array, search)
{
return array.indexOf(search) >= 0;
}
// Utilisation
if(isInArray(my_array, "my_value"))
{
//...
}