JavaScript实现字符串逆置的几种方法
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实现字符串逆置的几种方法的更多相关文章
- Javascript 去掉字符串前后空格的五种方法
第一种:循环检查替换 [javascript] //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } //去掉左边的空白 functi ...
- JavaScript字符串转数字的5种方法及其陷阱
摘要 :JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法! String 转换为 Number 有很多种方式,我可以想到的有 5 种! parseInt(num); / ...
- C语言strrev()函数:字符串逆置(倒序、逆序)
头文件:#include<string.h> strrev()函数将字符串逆置,其原型为: char *strrev(char *str); [参数说明]str为要逆置的字符串. s ...
- C#判断字符串为空的几种方法和效率判断
C#判断字符串为空的几种方法和效率判断 string定义 1.1 string str1="":会定义指针(栈),并在内存里划一块值为空的存储空间(堆),指针指向这个空间.1.2 ...
- [转] 用javascript修改css伪类的几种方法
用javascript修改css伪类的几种方法: Modify pseudo element styles with JavaScript http://pankajparashar.com/post ...
- Javascript将字符串日期格式化为yyyy-mm-dd的方法 js number 类型 没有length 属性 string类型才有
日期格式化相信对于大家来说再熟悉不过,最近工作中自己利用Javascript就写了一个,现在将实现的代码分享给大家,希望对有需要的朋友们能有所帮助,感兴趣的朋友们下面来一起看看吧. 这篇文章主要介绍的 ...
- js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)
js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...
- 详解JavaScript数组过滤相同元素的5种方法
详解JavaScript数组过滤相同元素的5种方法:https://www.jb51.net/article/114490.htm
- java字符串大小写转换的两种方法
转载自:飞扬青春sina blogjava字符串大小写转换的两种方法 import java.io..* public class convertToPrintString { pu ...
随机推荐
- 【iCore4 双核心板_uC/OS-II】例程二:任务的建立与删除
一.实验说明: 本例程建立三个任务,通过任务寄存器来实现任务的建立与删除功能.红灯和绿灯同时以固定 频率闪烁,当任务寄存器为5时,删除绿灯闪烁的任务LED1,此时只有红灯闪烁,当任务寄存器的 值为10 ...
- 【iCore1S 双核心板_ARM】例程十八:SD_IAP_FPGA实验——更新升级FPGA
实验现象及操作说明: 1.烧写程序成功,绿色ARM·LED灯点亮,三色FPGA·LED灯循环点亮,烧写失败,如果挂载SD卡失败,红灯快闪,如果打开文件失败,蓝灯快闪,读取文件指针移动失败,白灯点亮,升 ...
- 180510.最近踩过和听过的sql的坑
1. in的巨坑 CREATE TABLE #tmp1 (id INT, value int) CREATE TABLE #tmp2 (id1 INT, value int) ,),(,),(,) , ...
- Houdini技术体系 基础管线(二) :Heightfiled与UE4的无缝导入以及对World Composition的支持
Authored by TraceYang 前言 传统的制作做比较真实大世界3D关卡地形时,通常的采用的方式是把HeightMap和SplatMap(Layer Mask)导入到引擎的地形系统里 ...
- 3D Object Classification With Point Convolution —— 点云卷积网络
今天刚刚得到消息,之前投给IROS 2017的文章收录了.很久很久没有写过博客,今天正好借这个机会来谈谈点云卷积网络的一些细节. 1.点云与三维表达 三维数据后者说空间数据有很多种表达方式,比如:RG ...
- Ubuntu系统安装nginx
1.首先查看linux系统 cat /proc/version Linux version 4.9.59-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (cr ...
- mysql数据库转成oracle踩过的坑
1.使用count这种组函数,那么必须配合group by使用,获取的字段要么出现在组函数内要么出现在group by中2.oracle使用union不仅要字段名一致并且数据类型也要一致3.REGEX ...
- RE:从零开始的莫比乌斯反演
炫酷反演魔术根本看不懂啊...也就看看PoPoQQQ的ppt了. 这个赛季结束了,一年可以学很多很多东西呢. 因为我是写给自己看的所以写的很垃圾. 公式: 按我的理解,反演就是 x可以表示成y,然后 ...
- vue的插槽slot
插槽是写在子组件上,用啦留给父级添加内容的位置接口: 1. 父级里的 <template :is='子标签名'>父插入内容</template>标签,里的内容 sl ...
- vue里computed的get和set
computed里的对象有get和set方法. get是当该对象所依赖的变量发生变化是执行,重新returncomputed结果. set是该对象的值变化时会执行,并且将变化的结果作为参数传进set里 ...