字符串反转_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" |
|---|


