33 lines
587 B
JavaScript
33 lines
587 B
JavaScript
/*!
|
|
* array-slice <https://github.com/jonschlinkert/array-slice>
|
|
*
|
|
* Copyright (c) 2014-2017, Jon Schlinkert.
|
|
* Released under the MIT License.
|
|
*/
|
|
|
|
'use strict';
|
|
|
|
module.exports = function slice(arr, start, end) {
|
|
var len = arr.length;
|
|
var range = [];
|
|
|
|
start = idx(len, start);
|
|
end = idx(len, end, len);
|
|
|
|
while (start < end) {
|
|
range.push(arr[start++]);
|
|
}
|
|
return range;
|
|
};
|
|
|
|
function idx(len, pos, end) {
|
|
if (pos == null) {
|
|
pos = end || 0;
|
|
} else if (pos < 0) {
|
|
pos = Math.max(len + pos, 0);
|
|
} else {
|
|
pos = Math.min(pos, len);
|
|
}
|
|
|
|
return pos;
|
|
}
|