1. 一般来说js实现字符串逆置输出的一般思路是:

1、将字符串转为数组,一个字符为数组的一个元素; 
2、将数组倒置; 
3、再将数组元素拼接为字符串。

2. 一般用到的方法有:

join():该方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。 
split():将一个字符串分割为子字符串数组,然后将结果作为字符串数组返回。 
reverse():返回一个元素顺序被反转的 Array 对象。 
charAt(): 返回指定位置的字符。

3. 下面是几种利用js都实现了字符串的逆置输出。

/*方法一:利用Array对象的reverse()方法,用于颠倒数组中元素的顺序。*/
var str1 = "abcdefg";
var result1 = str1.split("").reverse().join("");
console.log(result1); //gfedcba /*方法二:*/
var str2 = "abcdefg";
for(var i = str2.length - 1; i >= 0; i--){
console.log(str2.charAt(i));
//结果:逆序输出abcdefg,但是每行只输出一个字符
} /*方法三:调用一个单独的函数实现*/
function Reverse(str) {
var len = str.length;
var result = "";
if(len == 0){
return null;
}
while( --len >= 0 ){
result += str.charAt(len);
}
return result; //gfedcba
}
var str3 = "abcdefg";
var result3 = Reverse(str3);
console.log(result3); /*方法四:利用call():调用一个对象的一个方法,以另一个对象替换当前对象。*/
var str4 = "abcdefg";
var result4 = Array.prototype.slice.call(str4).reverse().join("");
console.log(result4); //gfedcba /*方法五:利用排序实现*/
function Sort(a,b) {
return b.localeCompare(a); //反序排列
//return a.localeCompare(b); //正序排列
}
var str5 = "abcdefg";
var result5 = str5.split("").sort(Sort).join("");
console.log(result5); //gfedcba /*方法六:利用堆栈实现字符串逆置输出:先实现一个栈,然后再利用这个栈将字符串逆置输出*/
function stack() {
this.data = []; //保存栈内元素
this.top = 0; //记录栈顶位置
}
stack.prototype = {
push: function push(element) { //入栈:先在栈顶添加元素,然后元素个数加1
this.data[this.top++] = element;
},
pop: function pop() { //出栈:先返回栈顶元素,然后元素个数减1
return this.data[--this.top];
},
peek: function peek() { //查找栈顶元素
return this.data[this.top-1];
},
clear: function () { //清空栈内元素
this.top = 0;
},
length: function () { //返回栈内的元素个数,即长度
return this.top;
}
}
function reverse(str) { //利用这个栈实现字符串逆置输出
var s = new stack(); //创建一个栈的实例
var arr = str.split(''); //将字符串转成数组
var len = arr.length;
for(var i=0; i<len; i++){ //将元素压入栈内
s.push(arr[i]);
}
for(var i=0; i<len; i++){ //输出栈内元素
console.log(s.pop());
}
}
var str6 = "abcdefg";
reverse(str6);

4.堆栈的补充理解

堆栈实现: 
pop() :删除集合的最后一个元素,并返回元素的值。 
push() :将元素添加到集合的结尾。

栈的主要方法和属性: 
入栈。push方法; 
出栈。pop方法; 
访问栈顶元素。peek方法; 
清除所有栈内元素。clear方法; 
记录栈顶位置。top属性; 
判断栈内是否有元素存在。length方法;

PS:如果您还有更好更多的字符串逆序的实现方式,欢迎给我留言或与本人联系哦.

JavaScript实现字符串逆置的几种方法的更多相关文章

  1. Javascript 去掉字符串前后空格的五种方法

    第一种:循环检查替换 [javascript] //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 functi ...

  2. JavaScript字符串转数字的5种方法及其陷阱

    摘要 :JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法! String 转换为 Number 有很多种方式,我可以想到的有 5 种! parseInt(num); / ...

  3. C语言strrev()函数:字符串逆置(倒序、逆序)

    头文件:#include<string.h> strrev()函数将字符串逆置,其原型为:    char *strrev(char *str); [参数说明]str为要逆置的字符串. s ...

  4. C#判断字符串为空的几种方法和效率判断

    C#判断字符串为空的几种方法和效率判断 string定义 1.1 string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间.1.2 ...

  5. [转] 用javascript修改css伪类的几种方法

    用javascript修改css伪类的几种方法: Modify pseudo element styles with JavaScript http://pankajparashar.com/post ...

  6. Javascript将字符串日期格式化为yyyy-mm-dd的方法 js number 类型 没有length 属性 string类型才有

    日期格式化相信对于大家来说再熟悉不过,最近工作中自己利用Javascript就写了一个,现在将实现的代码分享给大家,希望对有需要的朋友们能有所帮助,感兴趣的朋友们下面来一起看看吧. 这篇文章主要介绍的 ...

  7. js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)

    js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...

  8. 详解JavaScript数组过滤相同元素的5种方法

    详解JavaScript数组过滤相同元素的5种方法:https://www.jb51.net/article/114490.htm

  9. java字符串大小写转换的两种方法

    转载自:飞扬青春sina blogjava字符串大小写转换的两种方法 import java.io..* public class convertToPrintString {          pu ...

随机推荐

  1. 微信小程序使用npm安装包

    小程序现在支持直接通过npm安装包了,点击这里了解更多. 记录一下我自己的安装步骤及安装过程中遇到的一些问题.希望能够帮助到正在阅读此篇文章的你~ 我就直接通过在项目根目录安装miniprogram- ...

  2. 在Linux下使用gcc编译mesa文件报undefined reference to symbol 'sin@@GLIBC_2.2.5和DSO missing from command line两个错误的解决方案

    一.概述 在Linux系统下使用gcc编译用C语言写的mesa的示例程序. 环境:Ubuntu Server 18.04.1 二.问题的出现 在Ubuntu下安装好mesa所需的库文件,将目标文件从g ...

  3. Datagrip连接SQLServer Connecting DataGrip to MS SQL Server

    Connecting DataGrip to MS SQL Server Posted on June 21, 2016 by Maksim Sobolevskiy Some specific nee ...

  4. How do I use IValidatableObject? 使用IValidatableObject添加自定义属性验证

    Here's how to accomplish what I was trying to do. Validatable class: public class ValidateMe : IVali ...

  5. STS中如何使用lombok

    Lombok有什么用使用Lombok时需要注意的点Lombok的安装spring boot集成LombokLombok常用注解@NonNull@Cleanup@Getter/@Setter@Gette ...

  6. 本人SW知识体系导航 - Programming menu

    将感悟心得记于此,重启程序员模式. js, py, c++, java, php 融汇之全栈系列 [Full-stack] 快速上手开发 - React [Full-stack] 状态管理技巧 - R ...

  7. git拉取远程分支到本地

    git拉取远程分支到本地 一.查看远程分支 -- 查看远程分支 git branch -r 二.拉取远程分支并创建本地分支 -- 采用此种方法建立的本地分支会和远程分支建立映射关系. git chec ...

  8. 【netcore基础】ConcurrentDictionary 使用字符串作为key给代码加锁且使用EF事物防止并发调用数据混乱的问题

    业务场景需要锁住指定的字符串下的代码,防止并发创建多个订单 这里我们使用 ConcurrentDictionary 首先初始化一个字典 private static readonly Concurre ...

  9. jenkins之 Throttle Concurrent Builds使用

    Jenkins控制并发插件 Throttle Concurrent Builds介绍,管网见:https://github.com/jenkinsci/throttle-concurrent-buil ...

  10. Node bak

    process.on('uncaughtException', function (err) { logger.info('Local Server Exception: ') logger.info ...