JS实现字符串反转

JavaScript026

JS实现字符串反转,第1张

首先了解JavaScript中字符串和数组的区别:

①字符串是不可变的,数组是可变的。字符串不可变是指字符串的成员函数不会改变其原始值,而是创建并返回一个新的字符串。而数组的成员函数都是在其原始值上进行操作。

②数组有一个字符串没有的可变更成员函数reserve()。

方法一:先将字符串转化为数组,待处理完后再将结果转化回字符串:

split()方法将一个字符串拆成字符并返回一个数组

reverse()方法使数组反转

join()方法将数组中的所有元素边接成一个字符串

var a="foo"

var b=a.split("")//转化为字符串数组

            .reverse()//进行反转

            .join("")//数组中的字符拼接回字符串

方法二:把字符串中的字符倒序存入数组,再将数组转化为字符串:

var newString = []

for(var i = a.length-1,j = 0i >= 0i --,j ++){

    newString[j] = a[i]

}

newString.join()

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 - 1i >= 0i--){

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=0i<leni++){ //将元素压入栈内

s.push(arr[i])

}for(var i=0i<leni++){ //输出栈内元素

console.log(s.pop())

}

}var str6 = "abcdefg"

reverse(str6)1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283

4.堆栈的补充理解

堆栈实现:

pop() :删除集合的最后一个元素,并返回元素的值。

push() :将元素添加到集合的结尾。

栈的主要方法和属性:

入栈。push方法;

出栈。pop方法;

访问栈顶元素。peek方法;

清除所有栈内元素。clear方法;

记录栈顶位置。top属性;

判断栈内是否有元素存在。length方法;