陣列、字串、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")