11
votes

Javascript - méthode flatMap sur tableau - (flatMap n'est pas une fonction)

Selon le site Web des développeurs Mozilla:

The flatMap() method first maps each element using a mapping function, then flattens the result into a new array. It is identical to a map followed by a flat of depth 1, but flatMap is often quite useful, as merging both into one method is slightly more efficient.

Exemple:

let arr = [1, 2, 4, 2, 3, 3, 4, 5, 5, 5, 8, 8, 9, 10];

const flatMap = arr.flatMap(x => x);
console.log(flatMap);

TypeError: arr.flatMap() is not a function

Pourquoi cela renvoie-t-il cette erreur?

ÉDITER

Je l'exécute via l'éditeur de texte Atom et j'ai utilisé HomeBrew pour le mettre à jour vers la dernière version en utilisant le brew upgrade node et cela me donne toujours la même erreur.

J'ai également essayé npm install n -g


5 commentaires

Il n'est probablement pas encore pris en charge dans votre navigateur. Mais quel est l'intérêt d'utiliser flatMap sur ce tableau?


Je veux juste voir que cela fonctionne et ensuite tester d'autres valeurs.


La documentation contient de nombreux exemples et alternatives si elle n'est pas prise en charge dans votre navigateur


developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...


C'est juste un problème de compatibilité du navigateur car il n'est pris en charge que sur les nouveaux navigateurs.


3 Réponses :


5
votes

Il semble que flatMap ne soit pas pris en charge sur votre navigateur. Voici une liste complète des navigateurs pris en charge: https://caniuse.com/#search=flatMap

Si vous voulez vraiment l'utiliser, voici un polyfill qui accordera un support jusqu'à ES3: https://www.npmjs.com/package/array.prototype.flatmap

Au fait, il est utile lorsqu'il est appliqué sur un tableau multidimensionnel!


2 commentaires

Je l'apprécie, je l'exécute sur atom et je crois que je l'ai mis à jour avec la dernière version de node, toujours ne fonctionne pas.


Je suggérerais d'utiliser lors du développement sur un nœud: github.com/creationix/nvm :)



2
votes

Cela signifie que vous utilisez un navigateur Web ou un autre environnement de développement qui ne prend pas en charge Array.prototype.flatMap (actuellement, Edge et IE ne sont pas pris en charge). Tableau CanIUse ici .

A noter également qu'il est principalement utilisé pour les tableaux multidimensionnels (pour éviter de chaîner map et flat , donc flatMap ).


3 commentaires

Je voudrais simplement mettre à niveau en utilisant homebrew dans mon cas, n'est-ce pas? brew upgrade node non?


Encore plus facile (pas besoin de Homebrew) - npm install n -g (voir cette réponse ).


Désinstallez simplement le nœud et réinstallez-le en utilisant nvm: github.com/creationix/nvm



11
votes

flatmap cela lors du test avec jest, c'est parce que flatmap n'est qu'une partie du nœud 11 et que j'utilisais le nœud 10.

Pour contourner le problème, j'ai ajouté require('core-js/stable'); dans mon setupTests.ts .

Je présume également que certains navigateurs ne l'auront pas non plus. En tant que tel, je mettrai également cette ligne requise dans mes importations d'application quelque part.


0 commentaires