@extra-array/group
Version:
Breaks array keeping similar values together.
26 lines (25 loc) • 502 B
JavaScript
;
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;