array.prototype.group

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

MIT 3 个版本
安装
npm install array.prototype.group
yarn add array.prototype.group
pnpm add array.prototype.group
bun add array.prototype.group
README

DEPRECATED

The proposal this was based on changed, and is now in the language as Object.groupBy/Map.groupBy.

The replacement packages are:

Please use those instead.

array.prototype.group Version Badge

github actions coverage License Downloads

npm badge

An ESnext spec-compliant Array.prototype.group 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.group 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.group

Usage/Examples

var group = require('array.prototype.group');
var assert = require('assert');

var arr = [0, 1, 2, 3, 4, 5];
var parity = function (x) { return x % 2 === 0 ? 'even' : 'odd'; };

var results = group(arr, function (x, i, a) {
    assert.equal(x, arr[i]);
    assert.equal(a, arr);
    return parity(x);
});

assert.deepEqual(results, {
    __proto__: null,
    even: [0, 2, 4],
    odd: [1, 3, 5],
});
var group = require('array.prototype.group');
var assert = require('assert');
/* when Array#group is not present */
delete Array.prototype.group;
var shimmed = group.shim();

assert.equal(shimmed, group.getPolyfill());
assert.deepEqual(arr.group(parity), group(arr, parity));
var group = require('array.prototype.group');
var assert = require('assert');
/* when Array#group is present */
var shimmed = group.shim();

assert.equal(shimmed, Array.prototype.group);
assert.deepEqual(arr.group(parity), group(arr, parity));

Tests

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

版本列表
1.1.3 2024-03-23
1.1.2 2022-11-03
1.1.1 2022-06-06