js中如何翻转一个字符串?

举报
花溪 发表于 2020/07/29 15:47:25 2020/07/29
【摘要】 字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理。需要对字符的处理方法比较熟悉,尽量能够熟悉多种解决方法更好!

字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理。需要对字符的处理方法比较熟悉,尽量能够熟悉多种解决方法更好!

字符串翻转的方法

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


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。