Je voulais donc les éléments du tableau arr1
qui appartiennent aussi au tableau arr2
. J'ai pensé arr1.filter(arr2.includes)
devrait faire l'affaire, mais il m'a donné une erreur (voir ci-dessous). Curieusement, cependant, arr1.filter(x => arr2.incudes(x))
a bien fonctionné. Même si les fonctions arr2.includes
et x => arr2.includes(x)
ne sont pas référentiellement égales, ne devraient-elles pas prendre les mêmes valeurs sur les mêmes entrées? Qu'est-ce que j'oublie ici?Javascript: style sans point de rappel
> arr1 = ['a', 'b', 'c']
[ 'a', 'b', 'c' ]
> arr2 = ['a', 'c', 'd']
[ 'a', 'c', 'd' ]
>
> arr1.filter(x => arr2.includes(x))
[ 'a', 'c' ]
> arr1.filter(arr2.includes)
TypeError: Cannot convert undefined or null to object
at includes (<anonymous>)
at Array.filter (native)
at repl:1:6
... etc ...
Il convient de noter qu'une recherche via 'Array.prototype.includes' est plutôt lent. Pour une opération définie comme l'intersection de deux tableaux 'Set' devrait être utilisé. – ftor