学习内容:
-
数学方法
-
字符串
-
js格式的数据和json格式的数据 相互转换
数学方法:
语法:
Math.方法();
例如:
- random();
语法:Math.random(); 作用:获取随机数字 返回值: 0~1之间的小数 [0,1) 包含0但是不包含1
- round();
语法:Math.round(); 作用:四射五入取整 返回值: 取整后的结果
- ceil(); 比它大的最小整数
语法:Math.ceil(); 作用:向上取整
- floor(); 比它小的最大整数
语法:Math.floor(); 作用:向下取整
- abs();
语法:Math.abs(); 作用:绝对值 返回值:在数轴上点到原点的距离
- pow();
语法:Math.pow(底数,指数);Math.pow(谁,的多少次方); 作用:取幂运算
- sqrt();
语法:Math.sqrt(数字); 作用:求数字的算数平方根
- max();
语法:Math.max(数字1,数字2,...数字n); 作用:若干数字的最大值
- min();
语法:Math.min(数字1,数字2,...数字n); 作用:若干数字的最小值
- PI
语法: Math.PI; 不写() 作用: 一个近似π的值
随机数
公式:Math.floor(Math.random()*个数+起始值)
进制转换
其他进制转十进制
语法:
parseInt(其它进制数字,告诉电脑这是个几进制)
返回值
十进制数字
// 二进制 0 1 0b // 八进制 01234567 0o 0 // 十进制 0123456789 // 十六进制 0123456789abcdef 0x // // 其它进制转换为十进制 // console.log(parseInt(101011,2)); // console.log(parseInt(77,8)); // console.log(parseInt('abc',16));
十进制转其它进制
语法:
十进制数字.toString(想转成几进制);
返回值:
是一个字符串形势的数字
var num = 666; console.log(num.toString(8)); console.log(num.toString(16)); console.log(num.toString(2));
保留小数点后边的位数
语法:
数字.toFixed(你要保留的小数位); 返回值
以字符串的形势返回保留好小数位结果
字符串:
提示:
字符串 数值 布尔 undefined null 原值 永不改变
给到的结果都是新的
-
什么是字符串
alert('hello world'); //程序员的第一行代码 字符串 是一组字符的集合 基本数据类型 String js内的字符串 使用引号来表示 创建字符串的方式2种 1. 字面量的方式创建 单引号 var str1 = 'hello world'; 双引号 var str2 = "hello world"; 反单引号 var str3 = `hello world`; 2. 内置构造函数的方式创建 var str4 = new String('hello world'); # 基本包装类型 对象.键; 对象.方法(); 本来 .属性 .方法() 是复杂数据类型的专有 但是 '字符串'.length; '字符串'.split() 数字.toString() 数字.toFixed() 字符串和数值是基本类型 他们也具备复杂数据类型的用法 所以字符串 和数值 又叫基本包装类型 什么是基本包装类型? 了解 平时存储的时候,按照基本数据类型的方式存储 在栈内存 使用的时候 瞬间变成复杂数据类型存储 提供给用户使用 使用完毕以后 再次转成基本数据类型存储
-
字符集
字符和二进制转换的对照表
最终是机器语言去执行
1. 最开始机器语言只懂 0 1 2. 26个英文字母 标点符号 等 给他们编了个号 10进制 这就是ASCII码 (as key) ASCII移动是128个字符 编号 从 0~127 把128个字符 编成了二进制 在计算机存储 及处理 我们需要记住两个 A 65 a 97
-
字符集
发展历程
0 1 => 英语 标点符号 都起一个编号 10进制 10进制=>二进制 这就是ASCII码
ASCII码有128个 这128个字符的代号是 0 ~127
把这个128个字符 编译成二进制在计算机存储
A 65 a 97
因为有了汉语 德语 法语 葡萄牙语 计算机需要识别这些语言
需要扩充 ascii
汉语 gb2312 这是汉语的
gb2312 = ascii+从129开始往后
gb2312 升级成 gbk
unicode (万国码 统一码)
前128 是 ASCII 字符集
从129开始 依次是每个国家的文字
分为两种
一种是 八位的十六进制 unicode编码
一种是十六位的十六进制 unicode编码
大家现在上网 用的 八位的十六进制 unicode编码
utf-8
中文的范围 4e00 - 9fa5
字符串的属性
原字符串 永不改变
1. length 属性 + 表示字符串的长度, 该字符串有多少字符组成 + 是一个 只读 的属性 + 读: => 语法: 字符串.length => 得到: 该字符串有多少字符组成 2. 索引属性 + 字符串也是按照索引排列的, 索引: 从 0 开始, 依次 +1 + 是一个只读属性 + 读: => 语法: 字符串[索引] => 得到: 该索引位置的字符, 或者 undefined 3. 遍历 + 因为字符串也是按照索引排列 + 可以使用循环遍历字符串
字符串操作的方法
字符串常用方法 + 通用语法: 字符串.方法名() + 注意: 所有的字符串常用方法都会不改变原始字符串, 而是以返回值形式给出结果 1. charAt() + 语法: 字符串.charAt(索引) + 返回值: 该索引位置的字符 => 如果没有该索引位置, 返回的是 空字符串 2. charCodeAt() + 语法: 字符串.charCodeAt(索引) + 返回值: 该索引位置字符的 unicode 编码 => 如果没有该索引位置, 返回的是 NaN 3. toUpperCase() + 语法: 字符串.toUpperCase() + 返回值: 将原始字符串内的所有字母转换成大写 4. toLowerCase() + 语法: 字符串.toLowerCase() + 返回值: 将原始字符串内的所有字母转换成小写 5. substr() + 语法: 字符串.substr(开始索引, 多少个) => 类似数组的方法:splice(开始的索引,多少个); + 返回值: 截取出来的部分字符串 6. substring() + 语法: 字符串.substring(开始索引, 结束索引) + 特点: 包前不包后 [开始索引,结束索引) + 返回值: 截取出来的部分字符串 7. slice() + 语法: 字符串.slice(开始索引, 结束索引) + 特点: 包前不包后, 填写负整数 + 返回值: 截取出来的部分字符串 8. split() + 语法: 字符串.split('分隔符') + 返回值: 是一个数组 => 按照分隔符把字符串分开成为几段内容 9. concat() + 语法: 字符串.concat(字符串1, 字符串2, ...) + 返回值: 拼接好的字符串 10. indexOf() + 语法: 字符串.indexOf(查找的字符, 开始索引) + 返回值: => 如果原始字符串内有该字符串片段, 那么是该字符串片段第一次出现的首字母索引位置 => 如果原始字符串内没有该字符串片段, 那么是 -1 11. lastIndexOf() + 语法: 字符串.lastIndexOf(字符串片段, 开始索引) + 返回值: => 如果原始字符串内有该字符串片段, 那么是该字符串片段第一次出现的首字母索引位置 => 如果原始字符串内没有该字符串片段, 那么是 -1 12. includes() + 语法: 字符串.includes(字符串片段) + 作用: 该字符串中是否包含该字符串片段 + 返回值: 一个布尔值 => true 说明有该字符串片段 => false 说明没有该字符串片段 13. startsWith() + 语法: 字符串.startsWith(字符串片段) + 作用: 判断该字符串是否以该字符串片段开头 + 返回值: 一个布尔值 => true 说明以该字符串片段开头 => false 说明不以该字符串片段开头 14. endsWith() + 语法: 字符串.endsWith(字符串片段) + 作用: 判断该字符串是否以该字符串片段结尾 + 返回值: 一个布尔值 => true 说明以该字符串片段结尾 => false 说明不以该字符串片段结尾 15. trim() + 语法: 字符串.trim() + 作用: 去除字符串首尾空白 + 返回值: 去除首尾空白后的字符串 16. trimStart() / trimLeft() + 语法: => 字符串.trimStart() => 字符串.trimLeft() + 返回值: 去除开始位置空白以后的字符串 17. trimEnd() / trimRight() + 语法: => 字符串.trimEnd() => 字符串.trimRight() + 返回值: 去除结束位置空白以后的字符串 18. repalce() + 语法: 字符串.replace(换下字符, 换上字符) + 作用: 替换原始字符串内的片段 + 注意: 只能替换一个 + 返回值: 替换好的字符串
js格式的数据和json格式的数据 相互转换:
-
js 格式的数据转成json 格式的数据
语法:
JSON.stringify(js格式数据);
返回值:
是一个json格式的数据
-
json格式的数据转js格式的数据
语法: JSON.parse(json格式的数据);
返回值: js格式的数据
//查询字符串和对象的相互转换
var str1 = "https://www.qfedu.com/html5?username=zhangsan&password=123456&age=18#haha";
// 步骤
// 1 将 张三给到 username
// 2 将 123456给到 password
// 3 将 18给到 age
// js的处理方式 可以 {username:'zhangsan',password:123456,age:18}
// 然后将 {username:'zhangsan',password:123456,age:18}
// 变成 username=zhangsan&password=123456&age=18
// +
// 字符串.concat(字符串)
// 'https://www.qfedu.com/html5?'+'username=zhangsan&password=123456&age=18'+'#haha';
// 关键问题 如何 将对象转成 'username=zhangsan&password=123456&age=18'
// 1.将对象转成字符串
// 封装成一个函数 最后的结果是字符串
function obj_to_str(obj){
var str = ''; // 准备一个空字符串
// 遍历对象
for(var k in obj){
str += `${k}=${obj[k]}&`
}
str = str.slice(0,-1);
return str;
}
var myobj = {username:'zhangsan',password:123456,age:18}
console.log(obj_to_str(myobj))
// 2.字符串转成对象
// 封装成一个函数 最后的结果是对象
// 'username=zhangsan&password=123456&age=18'
function str_to_obj(str){
var obj = {};
// console.log(str.split('&'));
// ['username=zhangsan','password=123456','age=18']
var arr = str.split('&');
// 遍历数组arr
for(var k in arr){
// console.log(arr[k]); // username=zhangsan
var newarr = arr[k].split('=');
// console.log(newarr); // ['username','zhangsan']
obj[newarr[0]] = newarr[1];
}
return obj;
}
console.log(str_to_obj('username=zhangsan&password=123456&age=18'))
//{username: 'zhangsan', password: '123456', age: '18'}