Web前端面试指导(二十):JavaScript中如何翻转一个字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Web前端面试指导(二十):JavaScript中如何翻转一个字符串?相关的知识,希望对你有一定的参考价值。
题目点评
字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理。需要对字符的处理方法比较熟悉,在回答的时候尽量能够说出多种解决方法更好!
字符串翻转的方法
1)使用字符串函数
- //str=hello
- function reverseString(str) {
- var array = str.split(‘‘);//[‘h‘,‘e‘,‘l‘,‘l‘,‘o‘];
- array = array.reverse();// [‘o‘,‘l‘,‘l‘,‘e‘,‘h‘];
- str = array.join(‘‘);//"olleh"
- return str;
- }
上面代码可以合并一行代码
- //str=hello
- function reverseString(str) {
- return str.split(‘‘).reverse().join(‘‘);;
- }
2)使用for循环
- function reverseString(str) {
- var newStr="";
- for(var i=str.length-1;i>=0;i--){
- newStr+=str[i];
- }
- return newStr;
- }
使用逆序遍历字符串,从后面将字符串累加起来。
3)使用递归
- function reverseString(str) {
- if (str === "") {
- return "";
- } else {
- return reverseString(str.substr(1)) + str.charAt(0);
- }
- }
- reverseString("hello"); // => olleh
第一部分的递归方法。你需要记住,你不会只调用一次,你将会有几个嵌套的调用。
每次调用str === "?"
reverseString(str)
+ str.charAt(0)
第一次调用
reverseString("Hello")
reverseString("ello") + "h"
第二次调用
reverseString("ello")
reverseString("llo") + "e"
第三次调用
reverseString("llo")
reverseString("lo") + "l"
第四次调用
reverseString("lo")
reverseString("o") + "l"
第五次调用
reverseString("o")
reverseString("") + "o"
第二部分的递归方法。
每次调用
返回
第五次调用
reverseString("") + "o" = "o"
第四次调用
reverseString("o") + "l" = "o" + "l"
第三次调用
reverseString("lo") + "l" = "o" + "l" + "l"
第二次调用
reverserString("llo") + "e" = "o" + "l" + "l" + "e"
第一次调用
reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h"
上面的方法还可以继续改良一下,改成三元操作符:
- function reverseString(str) {
- return (str === ‘‘) ? ‘‘ : reverseString(str.substr(1)) + str.charAt(0);
- }
- reverseString("hello"); // => olleh
以上是关于Web前端面试指导(二十):JavaScript中如何翻转一个字符串?的主要内容,如果未能解决你的问题,请参考以下文章
Web前端面试指导(十七):一个满屏 品 字布局 如何设计?
Web前端面试指导(十四):如何居中一个元素(正常绝对定位浮动元素)?
Web前端面试指导(十四):如何居中一个元素(正常绝对定位浮动元素)?