Big update!Introducing GitHub Bot Commands. Learn more
Log inBook a demo


Package Overview
File Explorer

Advanced tools


An ES2019 spec-compliant `Array.prototype.flatMap` shim/polyfill/replacement that works as far down as ES3.


Version published
Weekly downloads
increased by6.05%

Weekly downloads



v1.3.1 - 2022-11-02


  • [meta] use npmignore to autogenerate an npmignore file 3587a34
  • [meta] add auto-changelog d66bdea
  • [Deps] update define-properties, es-abstract d64c486
  • [actions] update rebase action to use reusable workflow 8d657d0
  • [Dev Deps] update aud, object-inspect, tape aa22741
  • [Tests] use for-each instead of foreach 748a78d
<!-- auto-changelog-above -->

1.3.0 / 2022-04-11

  • [New] shim/auto: add flatMap to Symbol.unscopables
  • [Deps] update call-bind, es-abstract
  • [actions] reuse common workflows
  • [actions] update codecov uploader
  • [Dev Deps] update eslint, @ljharb/eslint-config, @es-shims/api, aud, auto-changelog, object-inspect, safe-publish-latest, tape

1.2.5 / 2021-10-01

  • [readme] add github actions/codecov badges; update description; remove travis badge
  • [Deps] update call-bind, es-abstract; remove unused function-bind
  • [meta] use prepublishOnly, for npm 7+
  • [Dev Deps] update eslint, @ljharb/eslint-config, @es-shims/api, aud, has-strict-mode, object-inspect, tape
  • [actions] update workflows
  • [actions] use node/install instead of node/run; use codecov action
  • [Tests] increase coverage

1.2.4 / 2020-11-18

  • [Deps] update es-abstract; use call-bind where applicable
  • [meta] do not publish github action workflows
  • [Dev Deps] update eslint, @ljharb/eslint-config, object-inspect, tape; add aud
  • [Tests] migrate tests to Github Actions
  • [Tests] run nyc on all tests
  • [Tests] add implementation test; run es-shim-api in postlint; use tape runner
  • [actions] add "Allow Edits" workflow
  • [actions] switch Automatic Rebase workflow to pull_request_target event

1.2.3 / 2019-12-12

  • [Refactor] use split-up es-abstract (65% bundle size decrease)
  • [Deps] update es-abstract
  • [Dev Deps] update eslint, @ljharb/eslint-config, safe-publish-latest, object-inspect
  • [meta] add funding field
  • [Tests] use shared travis-ci configs
  • [actions] add automatic rebasing / merge commit blocking

1.2.2 / 2019-10-10

  • [Refactor] rename callback argument to mapperFunction, to match spec
  • [Deps] update es-abstract, define-properties
  • [Dev Deps] update eslint, @ljharb/eslint-config, covert, evalmd, object-inspect, safe-publish-latest, tape
  • [meta] create FUNDING.yml
  • [Tests] up to node v12.11, v11.15, v10.16, v9.11, v8.16, v6.17, v4.9; use nvm install-latest-npm
  • [Tests] use npx aud instead of nsp or npm audit with hoops

1.2.1 / 2018-02-23

  • [Fix] Temporarily hack main entry, so it's compatible with other resolvers
  • [Dev Deps] update eslint, nsp, tape
  • [Tests] up to node v9.6, v6.13

1.2.0 / 2018-01-18

  • [New] add "auto" entry point
  • [Fix] Move the receiver length check higher
  • [Fix] spec adjustments
  • [Refactor] adjust shouldFlatten logic
  • [Dev Deps] update eslint, object-inspect
  • [Tests] up to node v9.4

1.1.1 / 2017-11-29

  • [Fix] avoid an extra hole in the array (#1)
  • [Deps] update es-abstract
  • [Dev Deps] update eslint, nsp, object-inspect
  • [Tests] up to node v9.2, v8.9, v6.12; pin included builds to LTS

1.1.0 / 2017-10-03

  • [New] add explicit setting of “length” on target array
  • [Fix] FlattenIntoArray: add assertion that thisArg and mapperFunction are both passed together
  • [Tests] make coverage required

1.0.1 / 2017-10-02

  • Add readme

1.0.0 / 2017-10-01

  • Initial release



array.prototype.flatmap Version Badge

github actions coverage dependency status dev dependency status License Downloads

npm badge

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.

Getting started

npm install --save array.prototype.flatmap


var flatMap = require('array.prototype.flatmap'); var assert = require('assert'); var arr = [1, [2], [], 3]; var results = flatMap(arr, function (x, i) { assert.equal(x, arr[i]); return x; }); assert.deepEqual(results, [1, 2, 3]); var flatMap = require('array.prototype.flatmap'); var assert = require('assert'); /* when Array#flatMap is not present */ delete Array.prototype.flatMap; var shimmedFlatMap = flatMap.shim(); var mapper = function (x) { return [x, 1]; }; assert.equal(shimmedFlatMap, flatMap.getPolyfill()); assert.deepEqual(arr.flatMap(mapper), flatMap(arr, mapper)); var flatMap = require('array.prototype.flatmap'); var assert = require('assert'); /* when Array#flatMap is present */ var shimmedIncludes = flatMap.shim(); var mapper = 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



What is array.prototype.flatmap?

An ES2019 spec-compliant `Array.prototype.flatMap` shim/polyfill/replacement that works as far down as ES3.

Is array.prototype.flatmap popular?

The npm package array.prototype.flatmap receives a total of 11,556,990 weekly downloads. As such, array.prototype.flatmap popularity was classified as popular.

Is array.prototype.flatmap well maintained?

We found that array.prototype.flatmap demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.It has 1 open source maintainer collaborating on the project.

Last updated on 03 Nov 2022

Did you know?

Socket installs a Github app to automatically flag issues on every pull request and report the health of your dependencies. Find out what is inside your node modules and prevent malicious activity before you update the dependencies.

Install Socket


Subscribe to our newsletter

Get open source security insights delivered straight into your inbox. Be the first to learn about new features and product updates.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc