@extra-array/copy-within.min
Version:
Copies part of array within.
21 lines (20 loc) • 577 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 copyWithin(x, j = 0, i = 0, I = x.length) {
var I = i + Math.min(size(x, i, I), size(x, j));
var p = x.slice(0, j);
var q = x.slice(i, I);
var r = x.slice(j + q.length);
return p.concat(q, r);
}
export { copyWithin as default };