本文共 1130 字,大约阅读时间需要 3 分钟。
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; }
转载地址:http://ugthn.baihongyu.com/