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 );

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM