while 进行三次逆置

  1. function _reserve(a: any, m = 4, n = 2) {
  2. // 判断当m或者n的长度是否为0时
  3. if (m == 0 || n == 0) return a
  4. function _res(A: any, s: number, e: number) {
  5. /*
  6. s 参数表示开始的索引位置,
  7. e 表示结束的索引位置
  8. **/
  9. while (e - s >= 0) {
  10. if (A[s] !== A[e]) {
  11. console.log(1);
  12. let t = A[s]
  13. A[s] = A[e]
  14. A[e] = t
  15. }
  16. s++;
  17. e--
  18. }
  19. }
  20. // 全逆置 (0,5)
  21. _res(a, 0, m + n - 1)
  22. if (n !== 1) _res(a, 0, n - 1)
  23. if (m !== 1) _res(a, n, m + n - 1)
  24. return a
  25. }
  26. console.log(_reserve(['d','w','as','dsa','w'], 1, 4)); // 返回 [6, 9, 1, 2, 5, 4]

js方法

  1. function _reserve(arr: any, m: number, n: number) {
  2. return arr.slice(m).concat(arr.slice(0, m))
  3. }