JavaScript实现字符串逆置的几种方法

Stella981
• 阅读 868

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:如果您还有更好更多的字符串逆序的实现方式,欢迎给我留言或与本人联系哦.

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
SpringBoot自定义序列化的使用方式
场景及需求:项目接入了SpringBoot开发,现在需求是服务端接口返回的字段如果为空,那么自动转为空字符串。例如:\    {        "id":1,        "name":null    },    {        "id":2,        "name":"x
Stella981 Stella981
3年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Stella981 Stella981
3年前
JavaScript——数组(三)数组方法汇总
前面两篇大致介绍了一下数组的基本特性,这里说一下数组的常用方法:Array.join()   将数组中所有的元素都转化为字符串并拼接在一起,返回最后生成的字符串。  不改变原数组可通过指定的分隔符来分隔各个元素,如果不指定分隔符,则默认使用逗号。1vararr1,2,3;//创
分布式系统的主键生成方案对比 | 京东云技术团队
UUID​UUID(通用唯一识别码)是由32个十六进制数组成的无序字符串,通过一定的算法计算出来。为了保证其唯一性,UUID规范定义了包括网卡MAC地址、时间戳、名字空间(Namespace)、随机或伪随机数、时序等元素,以及从这些元素生成UUID的算法。
达里尔 达里尔
1年前
给数组添加新数据,判断数据是否重复
多选要进行数组拼接,希望判断往原数组里添的新数据是否重复,封装个简易方法languageconstdataArrayname:'aaa',id:1,name:'bbb',id:2;constnewDataname:'ccc',id:2;//要添加的新数