自动类型转换
函数转换
parseInt()
1、parseInt()在转换之前,首先会分析该字符串,判断位置为 0 处的字符,判断它是否是个有效数字,如果不是,则直接返回 NaN,不再继续,如果是则继续,直到找到非字符
2、parseInt()方法还有基模式,可以把二进制、八进制、十六进制或其他任何进制的字符串转换成整数。基是由 parseInt()方法的第二个参数指定的
3、如果十进制数包含前导 0,那么最好采用基数 10,这样才不会意外地得到八进制的值
parseFloat()
parseFloat()方法与 parseInt()方法的处理方式相似,但是parseFloat()可以识别第一个小数点
显示转换
toString()函数将内容转换为字符串形式,其中 Number 提供的
toString()函数可以将数字以指定的进制转换为字符串,默认为十进制。
Number 还提供了 toFixed()函数将根据小数点后指定位数将数字转为字符串,四舍五入
强制转换
JS 为 Number、Boolean、String 对象提供了构造方法,用于强制转换其他类型的数据。
此时操作的是整个数据,而不是部分
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>类型转换</title>
</head>
<body>
</body>
<script type="text/javascript">
//parseInt()
console.log(parseInt("123ab1c"));//123
console.log(parseInt("123.4.5ab1c"))//123
console.log(parseInt("0xA")); //returns 10
console.log(parseInt("22.5")); //returns 22
console.log(parseInt("blue111")); //returns NaN
console.log(parseInt("AF", 16)); //returns 175
console.log(parseInt("10", 2)); //returns 2
console.log(parseInt("10", 8)); //returns 8
console.log(parseInt("10", 10)); //returns 10
console.log(parseInt("010")); //returns 8
console.log(parseInt("010", 8)); //returns 8
console.log(parseInt("010", 10)); //returns 10
console.log("==========================");
// parseFloat()
console.log(parseFloat("123ab1c")); // 123
console.log(parseFloat("123.4ab1c")); // 123
console.log(parseFloat("0xA")); //returns 10
console.log(parseFloat("22.5")); //returns 22
console.log(parseFloat("blue111")); //returns NaN
console.log("====================显式转换==========");
var data = 10;
console.log(data.toString())
console.log(data.toString(2))
data = 1.4;
console.log(data.toFixed(0));
data = 1.49;
console.log(data.toFixed(1));
data = true;
console.log(data.toString());
console.log("===================强制转换==========");
console.log(Number("1"));
console.log(Number("1.4"));
console.log(Number("123aabc"));
console.log(Number("abc"));
console.log(Number(true));
console.log(Number(false));
console.log(Number(19));
console.log(Number(new Object()));
console.log(Number(new Array()));
</script>
</html>
数组的特点:
数组的长度是可变的
2、数组的类型可以不一样
3、不存在下标越界
数组的定义
1、隐式创建
var 变量名 = [值1,值2,…];
2、直接实例化
var 变量名 = new Array(值1,值2,…);
3、实例化并指定长度
var 变量名 = new Array(size);
获取数组的长度
数组.length
2、数组的遍历
数组的遍历即依次访问数组的每一个元素 ,JS 提供三种遍历数组的方式:
1、普通 for 循环遍历
for(var i = 0; i < 数组名.length; i++) {
}
注:可以拿到undefinded的值,无法获取数组中属性对应的值
2、for … in
for(var i in 数组) {
// i是下标或属性名
}
注:无法拿到undefinded的值,可以获取数组中属性对应的值
3、foreach
数组.foreach(function(element,index){
// element:元素;index:下标
});
注:无法获取属性对应的值与undefinded的值
* for – 不遍历属性
* foreach – 不遍历属性和索引中的 undefined
* for in – 不遍历索引中的 undefined
数组提供的方法
push 添加元素到最后
unshift 添加元素到最前
pop 删除最后一项
shift 删除第一项
reverse 数组翻转
join 数组转成字符串
indexOf 数组元素索引
slice 截取(切片)数组,原数组不发生变化
splice 剪接数组,原数组变化,可以实现前后删除效果
concat 数组合并
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>数组</title>
</head>
<body>
</body>
<script type="text/javascript">
// 1、隐式创建
var arr1 = [1,'a','b','c'];
// 2、直接实例化
var arr2 = new Array('aa','bb','cc');
// 3、实例化并指定长度
var arr3 = new Array(5);
// 获取数组的长度
console.log(arr1.length);
console.log(arr2.length);
console.log(arr3.length);
arr1.length = 10;
console.log(arr1.length);
console.log(arr1);
// 赋值
arr1[0] = 2; // 修改数组的值
arr1[6] = 'hello'; // 修改数组的值
arr1[13] = '13';
console.log(arr1);
// 取值
console.log(arr1[10]);
// 设置数组的属性
arr1["ii"] = "zhangsan";
console.log(arr1);
console.log(arr1.ii);
console.log("=======数组的遍历=========");
// 1、普通 for 循环遍历
for (var i = 0; i < arr1.length; i++) {
console.log(i + "----------" + arr1[i]);
}
console.log("===============");
// for... in
for (var i in arr1) {
console.log(i + '----------' + arr1[i]);
}
console.log("===============");
// foreach
arr1.forEach(function(elem,index){
console.log(index+ '----' + elem);
});
console.log("========数组提供的方法=======");
console.log(arr2);
arr2.push("dd"); // 数组的最后添加元素
arr2[arr2.length] = "ee";
console.log(arr2);
arr2.unshift("hello");
console.log(arr2);// 数组的最前面添加元素
// 分割数组
var str = arr2.join("-");
console.log(str);
// 将字符串转换成数组
var strarr = str.split("-");
console.log(strarr);
</script>
</html>