while 进行三次逆置
function _reserve(a: any, m = 4, n = 2) { // 判断当m或者n的长度是否为0时 if (m == 0 || n == 0) return a function _res(A: any, s: number, e: number) { /* s 参数表示开始的索引位置, e 表示结束的索引位置 **/ while (e - s >= 0) { if (A[s] !== A[e]) { console.log(1); let t = A[s] A[s] = A[e] A[e] = t } s++; e-- } } // 全逆置 (0,5) _res(a, 0, m + n - 1) if (n !== 1) _res(a, 0, n - 1) if (m !== 1) _res(a, n, m + n - 1) return a}console.log(_reserve(['d','w','as','dsa','w'], 1, 4)); // 返回 [6, 9, 1, 2, 5, 4]
js方法
function _reserve(arr: any, m: number, n: number) { return arr.slice(m).concat(arr.slice(0, m)) }