学习js的第十二天

学习内容:

  • 数学方法

  • 字符串

  • js格式的数据和json格式的数据 相互转换


数学方法:

语法:Math.方法();

例如:

  1. random();
语法:Math.random();
作用:获取随机数字 
返回值: 0~1之间的小数 [0,1) 包含0但是不包含1
  1. round();
语法:Math.round();
作用:四射五入取整
返回值: 取整后的结果
  1. ceil(); 比它大的最小整数
语法:Math.ceil();
作用:向上取整
  1. floor(); 比它小的最大整数
语法:Math.floor();
作用:向下取整
  1. abs();
语法:Math.abs();
作用:绝对值
返回值:在数轴上点到原点的距离
  1. pow();
语法:Math.pow(底数,指数);Math.pow(谁,的多少次方);
作用:取幂运算
  1. sqrt();
语法:Math.sqrt(数字);
作用:求数字的算数平方根
  1. max();
语法:Math.max(数字1,数字2,...数字n);
作用:若干数字的最大值
  1. min();
语法:Math.min(数字1,数字2,...数字n);
作用:若干数字的最小值
  1. 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格式的数据 相互转换:

  1. js 格式的数据转成json 格式的数据

    ​ 语法:

    ​ JSON.stringify(js格式数据);

    ​ 返回值:

    ​ 是一个json格式的数据

  2. 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'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值