JavaScript面向对象方式实现栈结构的字符串逆序
2017-05-25 17:42
766 查看
如何给一个字符串逆序?比如var str = ‘abcdefg’;逆序后变为’gfedcba’.方法有很多,比如,利用字符串自有的方法转换为数组,再利用数组的方法操作后重新转为字符串!
String.prototype.reverse = String.prototype.reverse || function() { return this.split('').reverse().join(''); } var str = '123456789'; alert(str.reverse());
利用charAt()方法实现字符串逆转:
String.prototype.reverse = String.prototype.reverse || function() { var str = ''; for (var i = this.length - 1; i >= 0; i--) { str += this.charAt(i); } return str; }
利用call方法
slice()方法既是Array数组的方法也是String的方法,可以通过call方法可以改变slice()方法执行的主体,将数组的slice方法调用call后,可以让字符串具有数组的特性,从而可以直接调用reverse()方法,最后通过join方法,得到逆序字串String.prototype.reverse = String.prototype.reverse || function() { //改变slice方法执行的主体 var arr = Array.prototype.slice.call(this);//将字串变为一个数组 return arr.reverse().join('');//将逆序后的数组变回字串 }
利用栈(stack)的实现
JS本身是没有提供栈的功能的,所以,需要自己设计数据结构来实现function Stack() { this.data = [];//保存栈内元素 this.top = 0;//记录栈顶指针 } Stack.prototype = { constructor: Stack, //入栈:先在栈顶加元素,然后个数+1 push: function(ele) { this.data[this.top++] = ele; }, //出栈:返回栈顶元素,元素个数-1 pop: function() { return this.data[--this.top]; }, //栈内元素个数,即长度 length: function() { return this.top; } } String.prototype.reverse = String.prototype.reverse || function() { var stack = new Stack(); var arr = this.split(''); var len = arr.length; var strRet = ''; for (var i = 0; i < len; i++) { stack.push(arr[i]); } for (var i = 0; i < len; i++) { strRet += stack.pop(); } return strRet; } var str = 'guoyu' alert(str.reverse());
function reverse(str) { var s = new Stack(); var arr = str.split(''); var len = arr.length; var result = ''; for (var i = 0; i < len; i++) { s.push(arr[i]); } for (var i = 0; i < len; i++) { result += s.pop(); } console.log(s); return result; }
相关文章推荐
- javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点
- Javascript实现最简跨平台面向对象拖拽
- javascript 面向对象,实现namespace,class,继承,重载
- javascript日期对象格式化为字符串的实现方法
- 数据结构与面向对象学习4 栈实现
- Lua的面向对象实现方式
- javascript 面向对象特性与编程实现
- Javascript实现最简跨平台面向对象拖拽
- javascript使用call方式实现对象继承
- JavaScript面向对象简易实现
- Javascript 类和对象 实现方式
- Javascript 面向对象机制的实现
- JavaScript的弱类对象及继承实现方式
- Javascript 对象方式实现命名参数调用(上):原理和手动实现
- Javascript实现最简跨平台面向对象拖拽
- javascript中实现对象继承的五种方式详解
- javascript面向对象中的对象创建、继承、封装等实现方式
- javascript 面向对象特性与编程实现
- Javascript面向对象特性实现封装、继承、接口详细案例——进级高手篇
- 【译】不用构造函数(Constructor)也能实现JavaScript的面向对象