学习前端开发那些事儿前端大杂烩

JavaScript 反转字符串

2021-05-21  本文已影响0人  lio_zero

今天,我们来写一个反转字符串的函数。它将实现如下所示:

"abcdefg" -> "gfedcba"

Array.prototype.reverse()

最简便的操作是使用 Array.prototype.reverse() 方法,它将数组中元素的位置颠倒,并返回该数组。该方法会改变原数组。

const reverseString = str => str.split('').reverse().join('')

console.log(reverseString('abcdefg')) // "gfedcba"

循环

创建一个空字符串,它将保存反向字符串,循环遍历字符串中的每个字符,并将其附加到新字符串的开头。

const reverseString = str => {
  let result = ''

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

  return result
}

console.log(reverseString('abcdefg')) // "gfedcba"

使用 for ... of

const reverseString = str => {
  let result = ''
  
  for (let character of str) {
    result += character
  }
  
  return reverseString
}

reverseString('abcdefg') // "gfedcba"

Array.prototype.reduce()

Array.prototype.reduce() 方法对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。

const reverseString = str => str.split('').reduce((rev, char) => char + rev, '')

console.log(reverseString('abcdefg')) // "gfedcba"

也可以使用 Array.prototype.reduceRight()

const reverseString = (str) => [...str].reduceRight((acc, cur) => acc + cur)

reverseString('abcdefg') // "gfedcba"

Array.prototype.sort

使用 Array.prototype.sort 反转字符串,这里不过多介绍,跟上面其他方法差不多,你可以再 如何在 JavaScript 中对对象数组进行排序? 查看 sort 如何使用。

function reverseString(str) {
  return str
    .split('')
    .sort(() => -1)
    .join('');
}

reverseString('abcdefg') // "gfedcba"

递归

递归是通过使用调用自身的函数来解决问题的一种方法。每次函数调用自身时,它都会将问题简化为子问题。此递归调用将继续,直到到达无需进一步递归即可调用子问题的点为止。

注意:给予递归正确的终止条件,以确保不会导致无限循环。

const reverseString = str => str ? reverseString(str.substring(1)) + str[0] : str

reverseString('abcdefg') // "gfedcba"
上一篇下一篇

猜你喜欢

热点阅读