mph85
mph85

Reputation: 1356

Javascript - flatMap method over array - (flatMap is not a function)

According to the Mozilla Developer Website:

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.

Example:

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

Why is this returning this error?

EDIT

I am running this through Atom text editor and have used HomeBrew to update it to the latest version using brew upgrade node and it is still giving me the same error.

I have also tried npm install n -g

Upvotes: 19

Views: 42232

Answers (3)

Matthew
Matthew

Reputation: 11347

I was getting this when testing with jest, it's because flatmap is only part of node 11 and I was using node 10.

As a workaround, I added require('core-js/stable'); in my setupTests.ts.

I presume also there are some browsers that won't have this either. As such I will also put that require line in my application imports somewhere.

Upvotes: 29

Jack Bashford
Jack Bashford

Reputation: 44107

It means you're using a web browser or other development environment that does not support Array.prototype.flatMap (currently Edge and IE have no support). CanIUse table here.

Also note that it is used primarily for multidimensional arrays (to avoid chaining map and flat, hence flatMap).

Upvotes: 2

Michele Riva
Michele Riva

Reputation: 562

It seems that flatMap is not supported on your browser. Here you are a complete list of supported browsers: https://caniuse.com/#search=flatMap

If you really want to use it, here you are a polyfill that will grant support down to ES3: https://www.npmjs.com/package/array.prototype.flatmap

By the way, it is useful when applied on a multidimensional array!

Upvotes: 6

Related Questions