javascript中字串和陣列的相互轉換

antzone發表於2017-03-14

字串和陣列的相互轉換操作是非常的重要的,因為在實際編碼過程中會經常用到,所以這是必須要掌握的知識點,當然這個知識點並不難,知道了就永遠知道了,並不是那種需要充分實踐才能夠掌握的東西,下面就做一下簡單的介紹。

一.字串轉換為陣列:

此操作會用到split()函式,它能夠以指定的字元作為分隔符,將字串轉換成一個陣列,例項程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var Str="abc-mng-zhang-mayi";
var newArray=Str.split("-");
console.log(newArray);

由輸出的結果可以看出,split()函式已經將字串轉換成一個陣列。

二.將陣列轉換為字串:

此操作可以使用Array物件的join()函式來實現,此函式可以將陣列中的元素以指定的字元連線起來,然後返回產生的字串。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var newArray=["abc","mng","zhang","mayi"];
var Str=newArray.join("-");
console.log(Str);

以上程式碼實現了我們的要求,使用"-"將陣列元素連線了起來,並生成了一個字串。

split()函式可以參閱JavaScript split()一章節。 

join()函式可以參閱javascript join()一章節。 

上面的兩個例子都是使用的自帶的函式,當然我們也可以自己寫,這樣靈活性更大,並且知根知底。

三.自定義字串轉換為陣列:

[JavaScript] 純文字檢視 複製程式碼
function StringToArray(str,substr) 
{ 
  var arrTmp=new Array(); 
  if(substr=="") 
  { 
    arrTmp.push(str); 
    return arrTmp; 
  } 
  var i=0,j=0,k=str.length; 
  while(i<k) 
  { 
    j=str.indexOf(substr,i); 
    if(j!=-1) 
    { 
      if(str.substring(i,j)!="") 
      { 
        arrTmp.push(str.substring(i,j)); 
      } 
      i = j+1; 
    } 
    else
    { 
      if(str.substring(i,k)!="") 
      { 
        arrTmp.push(str.substring(i,k)); 
      } 
      i=k; 
    } 
  } 
  return arrTmp; 
}
var Str="abc-mng-zhang-mayi";
console.log(StringToArray(Str,"-"));
console.log(StringToArray(Str,"-").length);

以上程式碼同樣實現了將字串轉換為陣列的功能,下面對程式碼進行一下注釋:

程式碼註釋:

1.function StringToArray(str,substr){},此函式用來進行轉化,str是要被轉換的字串,substr是分隔符。

2. var arrTmp=new Array(),宣告一個陣列,用來存放分割的字串片段。

3.if(substr=="") {arrTmp.push(str);return arrTmp;},如果字串分隔符為空,那麼就將整個字串放入陣列。

4. var i=0,j=0,k=str.length;宣告三個變數,並賦初值,k的值是字串中字元的個數。

5.while(i<k){},一個while迴圈語句,執行的條件是i的值小於k也就是小於字串中字元的個數。

6.j=str.indexOf(substr,i),用來檢測分隔符在字串出現的位置,如果indexOf()函式帶有兩個引數的,第二個引數是查詢指定字元開始的位置,這段程式碼要結合下面的程式碼理解。

7.if(j!=-1),如果查詢的分隔符存在。

8.if(str.substring(i,j)!=""){},擷取從開始查詢位置到查詢到第一個分隔符之間的字串。

9.arrTmp.push(str.substring(i,j));,將擷取的字串放入陣列。

10.i=j+1;將開始查詢的位置設定為分隔符的下一個字元。

11.else{},如果沒有查詢。

12.if(str.substring(i,k)!=""){arrTmp.push(str.substring(i,k));},如果最後一個分隔符之後的字元不為空,那麼就新增到陣列。

13.i=k,將i設定為k,這樣迴圈就停止了。

14.return arrTmp; 返回陣列。

相關閱讀:

1.push()函式可以參閱javascript push()一章節。

2.indexOf()函式可以參閱javascript String indexOf()一章節。 

3.substring()函式可以參閱javascript String substring()一章節。

四.自定義陣列轉換為字串:

[JavaScript] 純文字檢視 複製程式碼
function ArrayToString(arr,str) 
{ 
  var strTmp=""; 
  for(var i=0;i<arr.length;i++) 
  { 
    if (arr[i] != "")
    { 
      if(strTmp=="") 
      { 
        strTmp = arr[i]; 
      } 
      else
      { 
        strTmp=strTmp+str+arr[i]; 
      } 
    } 
  } 
  return strTmp; 
}
var newArray=["abc","mng","zhang","mayi"]; 
console.log(ArrayToString(newArray,"-"));

以上程式碼實現了我們的要求,可以將陣列轉換為字串,下面對程式碼進行一下注釋:

程式碼註釋:

1.function ArrayToString(arr,str){},第一個引數是陣列,第二個引數是連線字串。

2.var strTmp="",宣告一個空字串。

3.for(var i=0;i<arr.length;i++) {},遍歷陣列中的每一個元素。

4.f(arr!=""){}如果陣列元素不為空。

5.if(strTmp=="") {strTmp=arr;},如果字串中也為空,那麼就將陣列中的此元素賦值給字串strTmp。

6.else{strTmp=strTmp+str+arr},否則進行字串連線。

7.return strTmp,返回轉換後的字串。

相關文章