LendAndRegret/node_modules/es-toolkit/dist/compat/array/slice.js
2026-05-02 17:27:43 +08:00

44 lines
1.1 KiB
JavaScript

'use strict';
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const isIterateeCall = require('../_internal/isIterateeCall.js');
const isArrayLike = require('../predicate/isArrayLike.js');
const toInteger = require('../util/toInteger.js');
function slice(array, start, end) {
if (!isArrayLike.isArrayLike(array)) {
return [];
}
const length = array.length;
if (end === undefined) {
end = length;
}
else if (typeof end !== 'number' && isIterateeCall.isIterateeCall(array, start, end)) {
start = 0;
end = length;
}
start = toInteger.toInteger(start);
end = toInteger.toInteger(end);
if (start < 0) {
start = Math.max(length + start, 0);
}
else {
start = Math.min(start, length);
}
if (end < 0) {
end = Math.max(length + end, 0);
}
else {
end = Math.min(end, length);
}
const resultLength = Math.max(end - start, 0);
const result = new Array(resultLength);
for (let i = 0; i < resultLength; ++i) {
result[i] = array[start + i];
}
return result;
}
exports.slice = slice;