javascript 一 03 數據類型的轉換

javascript 一 03 數據類型的轉換

強制轉換

Number() String() Boolean()javascript

Number()

使用 Number 函數,能夠將任意類型的值轉化成數值。html

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,除非是包含單個數值的數組。java

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

簡析過程express

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])json

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()函數能夠將任意類型的值轉爲布爾值code

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

自動轉換

自動轉換爲布爾值orm

if (!undefined && !null && !0 && !NaN && !"") {
  console.log("true");
} // true

// 寫法一
expression ? true : false;

// 寫法二
!!expression;

自動轉換爲字符串htm

"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字符串互轉及取值

相關文章
相關標籤/搜索