今天,我们来写一个反转字符串的函数。它将实现如下所示:
"abcdefg" -> "gfedcba"
最简便的操作是使用 Array.prototype.reverse()
方法,它将数组中元素的位置颠倒,并返回该数组。该方法会改变原数组。
- 使用
String.prototype.split()
方法将字符串转换为数组。 - 使用
Array.prototype.reverse()
方法将其反转,然后使用Array.prototype.join()
方法将其转换回字符串
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()
方法对数组中的每个元素执行一个由您提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。
- 使用
String.prototype.split()
方法将字符串转换为数组。也可以使用扩展运算符,看你。 - 使用
Array.prototype.reduce()
方法将其转换为字符串。
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
反转字符串,这里不过多介绍,跟上面其他方法差不多,你可以再 如何在 JavaScript 中对对象数组进行排序? 查看 sort 如何使用。
function reverseString(str) {
return str
.split('')
.sort(() => -1)
.join('')
}
reverseString('abcdefg') // "gfedcba"
递归是通过使用调用自身的函数来解决问题的一种方法。每次函数调用自身时,它都会将问题简化为子问题。此递归调用将继续,直到到达无需进一步递归即可调用子问题的点为止。
注意:给予递归正确的终止条件,以确保不会导致无限循环。
- 递归终止的条件为字符串为空,将停止递归。
- 使用
String.prototype.substring()
方法获取并删除字符串中的第一个字符,然后将其他字符传递给函数。在将第一个字符附加到return
语句中- 。
const reverseString = (str) =>
str ? reverseString(str.substring(1)) + str[0] : str
reverseString('abcdefg') // "gfedcba"