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=https://www.cnblogs.com/zhang-chouchou/archive/2021/01/04/{
name:'張三',
age:18,
address:'張丑丑呀'
} ;
JSON.stringify()
JSON.stringify() 方法用于將 JavaScript 值轉換為 JSON 字串,
var formData = https://www.cnblogs.com/zhang-chouchou/archive/2021/01/04/{
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字串互轉及取值
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/244647.html
標籤:其他
