Number()
String()
Boolean()
使用 Number 函數(shù),可以將任意類型的值轉(zhuǎn)化成數(shù)值。
Number(324); // 324 Number("324"); // 324 Number("324abc"); // NaN Number(""); // 0 --Number(true); // 1 Number(false); // 0 --Number(undefined); // NaN Number(null); // 0
Number 方法的參數(shù)是對象時,將返回 NaN,除非是包含單個數(shù)值的數(shù)組。
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()); }
首先調(diào)用 obj.valueOf 方法, 結(jié)果返回對象本身;于是,繼續(xù)調(diào)用 obj.toString 方法,這時返回字符串[object Object],對這個字符串使用 Number 函數(shù),得到 NaN。 默認(rèn)情況下,對象的 valueOf 方法返回對象本身,所以一般總是會調(diào)用 toString 方法,而 toString 方法返回對象的類型字符串(比如[object Object])
Number({}); // NaN
String 函數(shù)可以將任意類型的值轉(zhuǎn)化成字符串
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 先調(diào)用對象自身的 toString 方法。如果返回原始類型的值,則對該值使用 String 函數(shù),不再進(jìn)行以下步驟。
02 如果 toString 方法返回的是對象,再調(diào)用原對象的 valueOf 方法。如果 valueOf 方法返回原始類型的值,則對該值使用 String 函數(shù),不再進(jìn)行以下步驟。
03 如果 valueOf 方法返回的是對象,就報錯。
Boolean()函數(shù)可以將任意類型的值轉(zhuǎn)為布爾值
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
自動轉(zhuǎn)換為布爾值
if (!undefined && !null && !0 && !NaN && !"") { console.log("true"); } // true // 寫法一 expression ? true : false; // 寫法二 !!expression;
自動轉(zhuǎn)換為字符串
"5" + 1; // '51' "5" + true; // "5true" "5" + false; // "5false" "5" + {}; // "5[object Object]" "5" + []; // "5" "5" + function () {}; // "5function (){}" "5" + undefined; // "5undefined" "5" + null; // "5null"
自動轉(zhuǎn)換為數(shù)值
"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()
方法功能:將字符串按某個字符切割成若干個字符串,并以數(shù)組形式返回
var str = "數(shù)組1,數(shù)組2,數(shù)組3,數(shù)組4,數(shù)組5"; var arry = str.split(","); console.log(arry); //["數(shù)組1", "數(shù)組2", "數(shù)組3", "數(shù)組4", "數(shù)組5"]
join()
方法功能:將數(shù)組元素用某個字符連接成字符串
var arry = ["數(shù)組1", "數(shù)組2", "數(shù)組3", "數(shù)組4", "數(shù)組5"]; var str = arry.join("-"); console.log(str); //數(shù)組1,數(shù)組2,數(shù)組3,數(shù)組4,數(shù)組5
var arry = ["數(shù)組1", "數(shù)組2", "數(shù)組3", "數(shù)組4", "數(shù)組5"]; console.log(Object.assign({}, arry)); //["數(shù)組1", "數(shù)組2", "數(shù)組3", "數(shù)組4", "數(shù)組5"]
復(fù)雜的數(shù)組可以用遍歷的方法
var formArr = [ { name: "數(shù)組1", value: "11111", }, { name: "數(shù)組2", value: "22222", }, { name: "數(shù)組3", value: "33333", }, { name: "數(shù)組4", value: "44444", }, ]; var obj = {}; formArr.map(function (e, item) { obj[e.name] = e.value; }); console.log(obj);
對象轉(zhuǎn)數(shù)組
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 對象 { "name":"張三", "age":"18", "address":"張丑丑呀" } // js 對象 var formData={ name:'張三', age:18, address:'張丑丑呀' } ;
JSON.stringify()
JSON.stringify() 方法用于將 JavaScript 值轉(zhuǎn)換為 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 字符串轉(zhuǎn)換為對象。
var str = '{"name":"張三","age":"18","address":"張丑丑呀"}'; console.log(JSON.parse(str));
json類型的字符串轉(zhuǎn)換為json對象及取值
var jsonString = '{"bar":"property","baz":3}'; var jsObject = JSON.parse(jsonString); //轉(zhuǎn)換為json對象 console.log(jsObject.bar); //取json中的值
json對象轉(zhuǎn)為json類型的字符串
var jsonString = '{"bar":"property","baz":3}'; var jsObject = JSON.parse(jsonString); //轉(zhuǎn)換為json對象 alert(jsObject.bar); //取json中的值 var st = JSON.stringify(jsObject); //轉(zhuǎn)換為json類型的字符串
json數(shù)組類型字符串取值
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);//轉(zhuǎn)換為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")
聯(lián)系客服