An ES2019 spec-compliant Array.prototype.flatMap shim/polyfill/replacement that works as far down as ES3.
This package implements the es-shim API interface. It works in an ES3-supported environment and complies with the spec.
Because Array.prototype.flatMap depends on a receiver (the this value), the main export takes the array to operate on as the first argument.
npm install --save array.prototype.flatmapvarflatMap=require('array.prototype.flatmap');varassert=require('assert');vararr=[1,[2],[],3];varresults=flatMap(arr,function(x,i){assert.equal(x,arr[i]);returnx;});assert.deepEqual(results,[1,2,3]);varflatMap=require('array.prototype.flatmap');varassert=require('assert');/* when Array#flatMap is not present */deleteArray.prototype.flatMap;varshimmedFlatMap=flatMap.shim();varmapper=function(x){return[x,1];};assert.equal(shimmedFlatMap,flatMap.getPolyfill());assert.deepEqual(arr.flatMap(mapper),flatMap(arr,mapper));varflatMap=require('array.prototype.flatmap');varassert=require('assert');/* when Array#flatMap is present */varshimmedIncludes=flatMap.shim();varmapper=function(x){return[x,1];};assert.equal(shimmedIncludes,Array.prototype.flatMap);assert.deepEqual(arr.flatMap(mapper),flatMap(arr,mapper));Simply clone the repo, npm install, and run npm test
