Skip to content
An ESnext spec-compliant `Array.prototype.flatMap` shim/polyfill/replacement that works as far down as ES3.
JavaScript
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github [actions] add automatic rebasing / merge commit blocking Dec 12, 2019
test [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `evalm… Oct 11, 2019
.eslintrc [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `covert`, `evalm… Oct 11, 2019
.gitignore Only apps should have lockfiles Sep 29, 2017
.npmrc Only apps should have lockfiles Sep 29, 2017
.nycrc [Fix] `FlattenIntoArray`: add assertion that `thisArg` and `mapperFun… Oct 4, 2017
.travis.yml [Tests] use shared travis-ci configs Nov 15, 2019
CHANGELOG.md v1.2.3 Dec 12, 2019
LICENSE Initial commit Sep 29, 2017
README.md
auto.js
implementation.js [Refactor] use split-up `es-abstract` (65% bundle size decrease) Dec 12, 2019
index.js [Deps] update `es-abstract` Nov 15, 2019
package.json [Dev Deps] update `eslint`, `@ljharb/eslint-config`, `tape` Jan 27, 2020
polyfill.js Implementation. Sep 30, 2017
shim.js Implementation. Sep 30, 2017

README.md

array.prototype.flatmap Version Badge

Build Status dependency status dev dependency status License Downloads

npm badge

An ESnext 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 proposed 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

Usage/Examples

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));

Tests

Simply clone the repo, npm install, and run npm test

You can’t perform that action at this time.