代码改变世界

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

2018-03-12 15:22  罗任德  阅读(1215)  评论(0编辑  收藏  举报

 

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