javascript 一 03 数据类型的转换
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")

javascript 一 03 数据类型的转换
浙公网安备 33010602011771号