源码
function baseSlice(array, start, end) {
var index = -1,
length = array.length;
if (start < 0) { // 传入的参数转换
start = -start > length ? 0 : (length + start);
}
end = end > length ? length : end; // 这里判断之后,end依然有可能为负数
if (end < 0) { // 传入的参数转换
end += length;
}
// 先对start和end单独做判断,然后,二者在比较
length = start > end ? 0 : ((end - start) >>> 0); // 按位操作符操作数字的二进制形式,但是返回值依然是标准的JavaScript数值。
start >>>= 0;
var result = new Array(length);
while (++index < length) {
result[index] = array[index + start];
}
return result;
}
我的代码
// 数组的slice方法重写
function mySlice(arr, start, end) {
let index = -1,
length = arr.length;
if (start >= length || end === 0) {
return new Array(0);
}
if (start < 0) {
start = -start > length ? 0 : length + start;
}
if (end < 0) {
end += length;
}
if (end > length) {
end = length;
}
length = start > end ? 0 : end - start;
let result = new Array(length);
while (++index < length) {
result[index] = arr[index + start];
}
return result;
}
来源:CSDN
作者:选择远方
链接:https://blog.csdn.net/qq_40713392/article/details/103578632