javascript 一 03 数据类型的转换

  • A+
所属分类:Web前端
摘要

Number() String() Boolean()使用 Number 函数,可以将任意类型的值转化成数值。Number 方法的参数是对象时,将返回 NaN,除非是包含单个数值的数组。


javascript 一 03 数据类型的转换

强制转换

Number() String() Boolean()

Number()

使用 Number 函数,可以将任意类型的值转化成数值。

Number(324); // 324 Number("324"); // 324 Number("324abc"); // NaN Number(""); // 0 --Number(true); // 1 Number(false); // 0 --Number(undefined); // NaN Number(null); // 0 

Number 方法的参数是对象时,将返回 NaN,除非是包含单个数值的数组。

Number({ a: 1 }); // NaN Number([1, 2, 3]); // NaN Number([5]); // 5 

简析过程

var obj = { x: 1 }; Number(obj); // NaN // 等同于 if (typeof obj.valueOf() === "object") {   Number(obj.toString()); } else {   Number(obj.valueOf()); } 

首先调用 obj.valueOf 方法, 结果返回对象本身;于是,继续调用 obj.toString 方法,这时返回字符串[object Object],对这个字符串使用 Number 函数,得到 NaN。 默认情况下,对象的 valueOf 方法返回对象本身,所以一般总是会调用 toString 方法,而 toString 方法返回对象的类型字符串(比如[object Object])

Number({}); // NaN 

String()

String 函数可以将任意类型的值转化成字符串

String(123); // "123" String("abc"); // "abc" String(true); // "true" String(undefined); // "undefined" String(null); // "null" // 对象 String({ a: 1 }); // "[object Object]" String([1, 2, 3]); // "1,2,3" 

简析过程

String({ a: 1 }); // "[object Object]"  // 等同于 String({ a: 1 }.toString()); // "[object Object]" 
  • 01 先调用对象自身的 toString 方法。如果返回原始类型的值,则对该值使用 String 函数,不再进行以下步骤。
  • 02 如果 toString 方法返回的是对象,再调用原对象的 valueOf 方法。如果 valueOf 方法返回原始类型的值,则对该值使用 String 函数,不再进行以下步骤。
  • 03 如果 valueOf 方法返回的是对象,就报错。

Boolean()

Boolean()函数可以将任意类型的值转为布尔值

Boolean(undefined); // false Boolean(null); // false Boolean(0); // false Boolean(NaN); // false Boolean(""); // false --Boolean(true); // true Boolean(false); // false --Boolean({}); // true Boolean([]); // true Boolean(new Boolean(false)); // true 

自动转换

自动转换为布尔值

if (!undefined && !null && !0 && !NaN && !"") {   console.log("true"); } // true  // 写法一 expression ? true : false;  // 写法二 !!expression; 

自动转换为字符串

"5" + 1; // '51' "5" + true; // "5true" "5" + false; // "5false" "5" + {}; // "5[object Object]" "5" + []; // "5" "5" + function () {}; // "5function (){}" "5" + undefined; // "5undefined" "5" + null; // "5null" 

自动转换为数值

"5" - "2"; // 3 "5" * "2"; // 10 true - 1; // 0 false - 1; // -1 "1" - 1; // 0 "5" * []; // 0 false / "5"; // 0 "abc" - 1; // NaN null + 1; // 1 undefined + 1; // NaN 

方法转换

字符串与数组的转化

split() 方法功能:将字符串按某个字符切割成若干个字符串,并以数组形式返回

var str = "数组1,数组2,数组3,数组4,数组5"; var arry = str.split(","); console.log(arry); //["数组1", "数组2", "数组3", "数组4", "数组5"] 

join() 方法功能:将数组元素用某个字符连接成字符串

var arry = ["数组1", "数组2", "数组3", "数组4", "数组5"]; var str = arry.join("-"); console.log(str); //数组1,数组2,数组3,数组4,数组5 

数组与对象的转化

var arry = ["数组1", "数组2", "数组3", "数组4", "数组5"]; console.log(Object.assign({}, arry)); //["数组1", "数组2", "数组3", "数组4", "数组5"] 

复杂的数组可以用遍历的方法

var formArr = [   {     name: "数组1",     value: "11111",   },   {     name: "数组2",     value: "22222",   },   {     name: "数组3",     value: "33333",   },   {     name: "数组4",     value: "44444",   }, ]; var obj = {}; formArr.map(function (e, item) {   obj[e.name] = e.value; }); console.log(obj); 

对象转数组

var obj = {   one: "11111",   two: "22222",   three: "33333",   four: "44444", }; var arr = []; for (let i in obj) {   let o = {};   // console.log(i,obj[i])   o[i] = obj[i];   arr.push(o); } console.log(arr); 

JSON 对象和 js 对象的相互转换

// json 对象  {  "name":"张三",  "age":"18",  "address":"张丑丑呀"  }  // js 对象 var formData={  name:'张三',  age:18,  address:'张丑丑呀'  } ; 

JSON.stringify()
JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

var formData = {   name: "张三",   age: 18,   address: "张丑丑呀", }; console.log(JSON.stringify(formData, ["name", "address", "age"])); // {"name":"张三","address":"张丑丑呀","age":18} console.log(JSON.stringify(formData, null, 4)); //     { //     "name": "张三", //     "age": 18, //     "address": "张丑丑呀" //     } 

JSON.parse()
JSON.parse() 方法用于将一个 JSON 字符串转换为对象。

var str = '{"name":"张三","age":"18","address":"张丑丑呀"}'; console.log(JSON.parse(str)); 

json 互转及取值 [搬运]

json类型的字符串转换为json对象及取值

var jsonString = '{"bar":"property","baz":3}'; var jsObject = JSON.parse(jsonString);    //转换为json对象 console.log(jsObject.bar);    //取json中的值 

json对象转为json类型的字符串

var jsonString = '{"bar":"property","baz":3}'; var jsObject = JSON.parse(jsonString); //转换为json对象 alert(jsObject.bar); //取json中的值 var st = JSON.stringify(jsObject); //转换为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部门"}]'; 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") 

01数据类型的转换
02js 数组,字符串,json互相转换
03json字符串互转及取值