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