UNPKG

@extra-array/group

Version:

Breaks array keeping similar values together.

26 lines (25 loc) 502 B
'use strict'; function id(v) { return v; } function cmp(a, b) { return a < b ? -1 : (a > b ? 1 : 0); } function group(x, fc = null, fm = null) { var fc = fc || cmp, fm = fm || id; var a = [], b = []; var u1, i = -1; for (var v of x) { var v1 = fm(v, ++i, x); if (i === 0 || fc(u1, v1) === 0) b.push(v); else { a.push(b); b = [v]; } u1 = v1; } a.push(b); return a; } module.exports = group;