@extra-array/slice-update
Version:
Gets a part of array.
20 lines (19 loc) • 473 B
JavaScript
;
function index(x, i = 0) {
return i < 0 ? Math.max(x.length + i, 0) : Math.min(i, x.length);
}
function indexRange(x, i = 0, I = x.length) {
i = index(x, i);
I = Math.max(i, index(x, I));
return [i, I];
}
function size(x, i = 0, I = x.length) {
var [i, I] = indexRange(x, i, I);
return I - i;
}
function slice$(x, i = 0, I = x.length) {
x.copyWithin(0, i, I);
x.length = size(x, i, I);
return x;
}
module.exports = slice$;