1. 程式人生 > >陣列、字串、json ······的相互轉換

陣列、字串、json ······的相互轉換

陣列和json的轉換

//陣列轉json串
var arr = [1,2,3, { a : 1 } ];
JSON.stringify( arr );

//json字串轉陣列
var jsonStr = '[1,2,3,{"a":1}]';
JSON.parse( jsonStr );

陣列和字串的轉換

陣列轉換為以逗號分割的字串

        string[] array = { "1", "2", "3"};
        string array1 = string.Join(",", array);

一、陣列轉字串

需要將陣列元素用某個字元連線成字串,示例程式碼如下:

var a, b,c; 
a = new Array(a,b,c,d,e); 
b = a.join('-'); //a-b-c-d-e  使用-拼接陣列元素
c = a.join(''); //abcde

二、字串轉陣列

實現方法為將字串按某個字元切割成若干個字串,並以陣列形式返回,示例程式碼如下:

var str = 'ab+c+de';
var a = str.split('+'); // [ab, c, de]
var b = str.split(''); //[a, b, +, c, +, d, e]

字串與字元陣列的轉換

1、將字串變成字元陣列:

String  str = “Hello world!”;

char[]  c = str.toCharArray();

2、將字元陣列變成字串:

char[]  c = {‘H’,’e’,’l’,’l’,’o’,’W’,’o’,’r’,’l’,’d’’!’};

String  str = new String(c);

3、取出字串的字元:

String  str = “Hello world!”;

for(int i=0;i<str.length();i++){

char c = str.charAt(i);

}

4、將某一部分陣列變成字串:

char[]  c = {‘H’,’e’,’l’,’l’,’o’,’W’,’o’,’r’,’l’,’d’’!’};

String  str = new String(c,0,3);

字串和物件的轉換

第一:如何判斷資料型別 typeof()

比如 arr="sdhhd"

 console.log(typeof(arr))  //string

 可以判斷為字串,其他的如陣列,布林等就不一一測試啦。

總結: typeof()主要是判斷資料型別的

第二:轉化為字串

(1) string   轉換格式string(arr)

比如 arr=1123

 console.log(typeof(arr))  //number

var arr1=string(arr)  // "1123"

 此時 console.log(typeof(arr1))  // "1123" 資料型別為string 

(2) toFixed  轉化格式arr.toFixed(n)  轉換成字串 以小數點後有n位數字形式展示實數

(3) toString    轉化格式 arr.toString() 此方法可以直接將陣列轉換為字串

(4)toLocaleString 轉換格式 arr.toLocaleString();此方法把陣列轉換為本地字串

(5)toPrecision 轉化格式arr.toPrecision(n) 此方法是在物件的值超出指定位數時將其轉換為指數計數法

總結:此方法一般用於轉換為字串的時候,在做專案的時候遇見轉換為字串可以使用,轉換字串主要用的還是前三種,後面兩個用的時候瞭解下

第三:轉換為Boolean值 轉換格式Boolean(arr) 這個只有false和true兩個值

比如 var arr=["r",4,5]

alert(Boolean(arr) ) true;

var arr=false;

alert(Boolean(arr) ) false;

var arr=true;

alert(Boolean(arr) ) true;

var arr=null;

alert(Boolean(arr) ) false;

var arr=0; false

var arr=1;true 非0即為真

........等等

總結:此方法主要是判斷boolean的,在判斷bool值的時候可以用

第三:字串分割成陣列

(1)  split 方法 arr.split(m,n) 兩個引數 m為開始分割的起點 n為分割的最大長度

比如 var arr="sdhf"

console.log(arr1.split(" ")) //["s","d","h","f"]

console.log(arr1.split(" ")) //["sdhf"]

(2) 正則表示式方法

var arr="sdhf"

var arr1=arr.replace(/(.)(?=[^$])/g,"$1,").split(",");    console.log(arr1)//["s","d","h","f"]

總結:推薦使用方法一,方法一功能上面還有很多,具體的分割自己可以有選擇性的應用

第四:轉換成數值

(1) number 轉換方法number(arr)  此方法只能轉換數字 如果物件的值不能轉換為數字將會返回NAN

 比如 number("789")//789

          number("gg789")//NAN

          number("789 33")//NAN

(2) parseInt 轉換方法 parseInt (arr) 此方法轉化為浮點數,首位不為數值或者空格為返回NAN

比如  parseInt("789")//789

         parseInt("gg789")//NAN

         parseInt("789 33")//789

         parseInt("78.33")//78 (3)parseFloat 轉化方法parseFloat(arr)此方法只轉換為整數,首位不為數值或者空格為返回NAN

比如  parseFloat("789")//789

         parseFloat("gg789")//NAN

         parseFloat("789 33")//789

         parseFloat("78.33")//78.33 總結:轉換數值推薦使用方法2或者3,整數用方法2,浮點數用方法3

第五:字串和物件的互相轉換 JSON.stringify(arr);物件轉換為字串  JSON.parse(str) 或者eval字串轉換為物件

比如var arr={

                testArray:"[1,2,3,4]", name:"js", data:"mayany"

}

var arr1= JSON.stringify(arr);

console.log(arr1);  //此時為字串

var arr2 = JSON.parse(arr1);  

console.log(arr2);  //此時為物件

或者

var arr1= JSON.stringify(arr);

console.log(arr1);  //此時為字串

var arr2=eval('(' + arr1+ ')');

console.log(arr2);  //此時為物件

1.json物件轉換為字串

JSON.stringify(value [, replacer] [, space]) 

var student = new Object();

student.id = "001";

student.name = "程陳";

student.age = "18";

var str = JSON.stringify(student);

//{"id":"001","name":"程陳","age":"18"}

var str1 = JSON.stringify(student,["id"],"ok");

//{ //ok"id": "001" //}

var data = [ { name: "小紅", sex: 1, age: 10 }, { name: "小明", sex: 0, age: 10 }, { name: "小華", sex: 1, age: 30 } ]; var str_json = JSON.stringify(data, function (k, v) { if (k === "sex") { return ["女", "男"][v]; } return v; });

//[{"name":"小紅","sex":"男","age":10},{"name":"小明","sex":"女","age":10},{"name":"小華","sex":"男","age":30}]

replacer : 使用來過濾的,可以出來陣列和函式

情況一:replacer為陣列時,通過後面的實驗可以知道,它是和第一個引數value有關係的。一般來說,系列化後的結果是通過鍵值對來進行表示的。 所以,如果此時第二個引數的值在第一個存在,那麼就以第二個引數的值做key,第一個引數的值為value進行表示,如果不存在,就忽略。

  情況二:replacer為方法時,那很簡單,就是說把系列化後的每一個物件(記住是每一個)傳進方法裡面進行處理。

     space:就是用什麼來做分隔符的。 

  1)如果省略的話,那麼顯示出來的值就沒有分隔符,直接輸出來 。   2)如果是一個數字的話,那麼它就定義縮排幾個字元,當然如果大於10 ,則預設為10,因為最大值為10。   3)如果是一些轉義字元,比如“\t”,表示回車,那麼它每行一個回車。    4)如果僅僅是字串,就在每行輸出值的時候把這些字串附加上去。當然,最大長度也是10個字元。 

2.字串轉換為json 物件

var str2 = '{"abc":"123","bcd":"234"}';//每個屬性都要用雙引號括起來;不然會有異常

var obj = JSON.parse(str2);

//Object {abc: "123", bcd: "234"}

3.陣列轉換為字串

var arr = ["aaa","bbb","ccc","ddd"];

var str4 = arr.join(","); 

//aaa,bbb,ccc,ddd

4.字串轉換為陣列

var str5 = "123,234,345,456"; var arr1 = str5.split(","); console.log(arr1);

//["123", "234", "345", "456"]

今天用到了json陣列和json物件和json型別字串之間互轉及取值,記錄一下:

1.json型別的字串轉換為json物件及取值

1  var jsonString = '{"bar":"property","baz":3}';
2   var jsObject = JSON.parse(jsonString);    //轉換為json物件
3   alert(jsObject.bar);    //取json中的值

 2.json物件轉為json型別的字串

var jsonString = '{"bar":"property","baz":3}';

var jsObject = JSON.parse(jsonString); //轉換為json物件

alert(jsObject.bar); //取json中的值

var st = JSON.stringify(jsObject); //轉換為json型別的字串  

3.json陣列型別的字串轉換為json及取值 和json物件轉換為轉換為json字串

 //json陣列型別字串取值
var jsonStr = '[{"id":"01","open":false,"pId":"0","name":"A部門"},{"id":"01","open":false,"pId":"0","name":"A部門"},{"id":"011","open":false,"pId":"01","name":"A部門"},{"id":"03","open":false,"pId":"0","name":"A部門"},{"id":"04","open":false,"pId":"0","name":"A部門"}, {"id":"05","open":false,"pId":"0","name":"A部門"}, {"id":"06","open":false,"pId":"0","name":"A部門"}]';
var jsonObj =  JSON.parse(jsonStr);//轉換為json物件
for(var i=0;i<jsonObj.length;i++){
        alert(jsonObj[i].id);  //取json中的值
}
console.log(jsonObj)
var jsonStr1 = JSON.stringify(jsonObj)
console.log(jsonStr1+"jsonStr1")