javascript,字符串和数组的反序排列

在程序中,我们经常会遇到将数组或者字符串反序排列

1.数组的反序排列

看看下面的代码

function reverse(a){
var len = a.length;//获取数组的长度
var mid = parseInt(len/2);//获取数组长度的中间值,由于有可能是不是整数,将得到的数字转为整数
//利用交换的思想,将数组内的元素放在相应的地方,循环次数为mid+1次
for(i = 0;i <= mid;i++){
	var temp = a[i];
	a[i] = a[len-1-i];
	a[len-1-i] = temp;	
}
return a;
}
var arr = [1,2,3,4,5,6,"m",8,9]; reverse( arr);

看看结果:

 

数组的反序排列与冒泡排序的思想十分相似,后者是比较大小进行交换以达到有序的排序,前者是数组对应内容交换,以达到数组反序排列。

2.字符串反序排列

字符串反序排列有很多种思路,这里介绍一种,

先看下代码:

function revert( a ){
	var a_result = new Array();
	while( a.length ){
			a_result.push( a.pop() );//使用pop方法删除并返回原数组中的最后一个元素,使用push()方法将返回的元素添加到新的数组末尾。
} return a_result.join("");//使用join()方法将得到的字符反序数组,放入到一个字符串中
} var str = "abcd"; var arr_str = str.split("");//使用splitr()方法将字符串分割成字符串数组
revert( arr_str );

来看结果:

这种思路中用了很多的字符串函数。

2.1 使用split()函数将字符串分割成字符串数组;

来看看详细介绍

语法

stringObject.split(separator,howmany)

 参数:

separator:必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
howmany:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
返回值:一个字符串数组。该数组是通过在 separator 指定的边界处将字符串 stringObject 分割成子串创建的。返回的数组中的字串不包括 separator 自身。
提示:如果把空字符串 ("") 用作 separator,那么 stringObject 中的每个字符之间都会被分割。在本例中,就是使用("")用作separator。但是join()的功能是split()函数相反,是用来连接字符串。

例子:
//返回一部分字符串
"hello".split("",3);//可返回["h","e","l"]

2.2使用pop()函数用于删除并返回数组的最后一个元素。

语法

arrayObject.pop()

 返回值:返回数组arrayObject的最后一个值提示:pop()方法会将数组长度减1,删除并返回数组的最后一个元素。如果数组为空,pop()并不改变数组,会返回“undefined”;

2.3使用push()函数将,pop()函数返回的数,放在结果数组中;

push()方法可向数组的末尾添加一个或多个元素,并返回新的长度。

语法:

1 arrayObject.push(element1,element2,...);

提示:push()方法,会返回数组的新的长度;

2.4 使用join()函数将数组中的值连接成字符串;

join(),方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。

语法

arrayObject.join(separator)

参数:separator可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。

返回值:返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator字符串而生成的。

例子

var arr = new Array("a","c","b");
arr.join("");//结果是"acb"
arr.jion(".");//结果是"a.c.b"

  当然还有一种方法,反序字符串,就是使用上面例子中的交换思想。个人认为,使用javascript字符串函数效率高。

看看使用交换,怎么写。

function revert(a){
var len = a.length;//获取数组的长度
var mid = parseInt(len/2);//获取数组长度的中间值,由于有可能是不是整数,将得到的数字转为整数
//利用交换的思想,将数组内的元素放在相应的地方,循环次数为mid+1
次
for(i = 0;i <= mid;i++){
	var temp = a[i];
	a[i] = a[len-1-i];
	a[len-1-i] = temp;	
}
return a.join("");
}

var str = "abcd";
var arr_str = str.split("");//使用splitr()方法将字符串分割成字符串数组
revert( arr_str );

  

转载于:https://www.cnblogs.com/huanhuan8808/p/3217235.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值