数组、字符串、json ······的相互转换

字符串和对象的转换

第一:如何判断数据类型 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);  //此时为对象

json对象与字符串的相互转换,数组和字符串的转换

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"]

猜你喜欢

转载自blog.csdn.net/zhanghl150426/article/details/83864837