字符串反转_JavaScript
今天在freeCodeCamp上面刷题,碰到一题是有关于字符串反转。反转一个字符串是JavaScript中常见的面试题之一。可能面试官会给你一个字符串“Hello Word!”,让你通过JavaScript的方法,将其变成"!droW olleH"。 我也是初学者,利用前面所学数组相关的知识以及题目的提示,我算是过关了,后来想,是不是还有其他的方法能破此题呢?搜索了一下,还是有不少的方法,这里把这些方法罗列一下,以备后面可以使用。 要做的事情 我们要做的事情: 将提供的字符串反向显示在反向字符串之前,需要将字符串转化成一个数组最终结果依旧是一个字符串 接下来,我们一起看看有哪些方法能实现上述要求。 使用内置函数 在练习题中,提示我们可以使用三种方法配合,能顺利让一个字符串反向显示: String.prototype.split()Array.prototype.reverse()Array.prototype.join() 简单的过一下: split()方法将一个字符串对象的每个字符拆出来,并且将每个字符串当成数组的每个元素reverse()方法用来改变数组,将数组中的元素倒个序排列,第一个数组元素成为最后一个,最后一个变成第一个join()方法将数组中的所有元素边接成一个字符串 来看个实例: function reverseString(str) { // 第一步,使用split()方法,返回一个新数组 // var splitString = "hello".split(""); var splitString = str.split(""); //将字符串拆分 // 返回一个新数组["h", "e", "l", "l", "o"] // 第二步,使用reverse()方法创建一个新数组 // var reverseArray = ["h", "e", "l", "l", "o"].reverse(); var reverseArray = splitString.reverse(); // 原数组元素顺序反转["o", "l", "l", "e", "h"] // 第三步,使用join()方法将数组的每个元素连接在一起,组合成一个新字符串 // var joinArray = ["o", "l", "l", "e", "h"].join(""); var joinArray = reverseArray.join(""); // "olleh" // 第四步,返回一个反转的新字符串 return joinArray; // "olleh"}reverseString("hello"); // =gt; olleh 将上面的方法简化一下,可以写成这样: function reverseString(str) { return str.split("").reverse().join(""); }reverseString("hello"); // =gt; olleh 使用一个递减循环遍历将字符串反转 这种方法使用的是一个 function reverseString(str) { // 第一步:创建一个空的字符串用来存储新创建的字符串 var newString = ""; // 第二步:使用for循环 // 循环从str.length-1开始做递减遍历,直到 i 大于或等于0,循环将继续 // str.length - 1对应的就是字符串最后一个字符o for (var i = str.length - 1; i gt;= 0; i--) { newString += str[i]; // 或者 newString = newString + str[i]; } // 第三步:返回反转的字符串 return newString; }reverseString('hello'); // =gt; // "olleh" 简单的看看字符串遍历的过程。假设需要将字符串"hello"反转。其整个遍历过程如下表所示:
| 迭代顺序 | 对应 | 新字符串 newString 每次迭代 str.length - 1 newString + str[i] 第一次迭代 5 - 1 = 4 "" + "o" = "o" 第二次迭代 4 - 1 = 3 "o" + "l" = "ol" 第三次迭代 3 - 1 = 2 "ol" + "l" = "oll" 第四次迭代 2 - 1 = 1 "oll" + "e" = "olle" 第五次迭代 1 - 1 = 0 "olle" + "h" = "olleh" |
---|
- 为什么Windows命令提示符会在执行长批处理文件或程序时按下
- 如何在Windows 10上启用“现在可以安全地关闭计算机”
- active-directory – Active Directory域如何加入计算机(本
- 被社区关注的Blink开源到底向上游贡献了什么?
- 自动化运维落实到位的三点基础及常用工具对比
- 如何在Windows 10上使用Windows Update目录驱动程序安装打印
- VSCodium:100% 开源的VS Code
- windows-7 – 使用代理和远程桌面网关连接到远程桌面?
- 颜值性能两开花用Mac完美运行Windows 10不要太爽
- Win10 RS2预览版14901快速版快速通道开始推送