JavaScript 字符串反转(倒序)的几种方式,原来还有那么多方法

53 阅读1分钟

JavaScript 字符串反转(倒序)的几种方式,原来还有那么多方法

一、利用数组的 reverse() 和 join() 方法

把字符串 str 转数组,然后调用reverse()反转数组顺序,接着join()把反转后的数组重新拼接成字符串

把字符串转数组的方法又有好多种,例如:

  1. str.split('')
  2. Array.from(str)
  3. Array.prototype.slice.call(str)

代码实现

// let arr = str.split('')
// let arr = Array.from(str)
let arr = Array.prototype.slice.call(str)
let str2 = arr.reverse().join('')

二、遍历

下标从最后一个元素开始往前遍历,把遍历的字符重新拼接成一个新的字符串

let str2 = ''
for (let i = str.length - 1; i >= 0; i--) {
   str2 += str[i]
}

三、递归

function reverseString(str) {
  if (str === '') {
    return ''
  } else {
    return reverseString(str.substr(1)) + str.charAt(0)
  }
}

四、延伸,手写数组的 reverse 函数

思路:使用双指针(左右指针),一个从字符串前面,一个从字符串后面,两个指针同时向中间移动,并交换元素。

function reverseString(str) {
  let left = 0
  let right = str.length - 1
  while (left < right) {
    [str[left], str[right]] = [str[right], str[left]]
    left++
    right--
  }
  return str
}