数组Api

数组
    1.API
        JS预定义的一组函数和方法
        reverse()      翻转数组元素
        var arr= ['a','b','c','d'];
        // 翻转数组元素
        arr.reverse()
        console.log(arr);
 
        sort()        对数组元素进行排序,默认是按照Unicode编码排列
 
sort( function(a,b) {
     return   a-b     //数字从小到大排列
     //return   b-a  //数字从大到小排列
})
 
        var arr= [23,9,78,6,45];
        //排序
        //默认是按照首个字符的Unicode编码排列
        arr.sort(function(a,b) {
            //a、b代表每次拿到的两个数字
            // console.log(a,b);
           //排序的条件,如果前边的大于后边
            return a-b  //数字从小到大排列
        } )
        console.log(arr);
 
        toString()    将数组转为字符串
        var arr=['a','b','c'];
        //数组转为字符串
        console.log(arr.toString());   //'a,b,c'
 
         join()        将数组转为字符串,元素之间默认用逗号分割,可以指定分割的字符     
      var arr=['a','b','c'];
        //可以指定元素之间的分割字符
        console.log(arr.join());
 
         concat(数组1,数组2,...)    拼接多个数组
        var arr1 = ['大雄','静香','哆啦A梦'];
        var arr2 = ['小夫','胖虎','出目杉'];
        var arr3 = ['路飞','娜美','香吉士'];
        //拼接成一个数组
        //打印一个API的结果,这就是在看返回值
        console.log(arr1.concat(arr2,arr3));
 
如果学习一个API:作用、参数、返回值
数组API 还需要查看原数组是否会发生变化
        slice(start,end)    截取数组元素,start开始的下标,end结束的下标,不包含end本身;end为空截取到最后,如果下标是负数表示倒数;返回截取的元素,格式为数组。
 
练习:创建数组,包含a~h,每个字母是一个元素,分别截取出bc,f;把截取到的两部分拼接成一个数组。
        var arr = ['a','b','c','d','e','f','g','h'];
        var arr1 = arr.slice(1,3);
        var arr2 = arr.slice(-3,-2);
        console.log(arr1,arr2);
        console.log(arr1.concat(arr2));
 
 
    splice(start,count,v1,v2..)    删除数组元素,start开始的下标,count删除的数量,count为空删除到最后,下标为负数表示倒数,v1,v2表示删除后要补充的元素,返回的删除的元素,原数组会发生变化
 
练习:创建数组包含a~h,每个字母是一个元素,分别删除cd,替换f为m,在下标为1的位置插入z
        var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
        arr.splice(2, 2);
        arr.splice(-3, 1, 'm');
        arr.splice(1, 0, 'z');
        console.log(arr);
 
    push()     在数组的末尾添加元素,返回数组的长度,原数组会发生变化
    pop()       删除数组末尾的一个元素,返回删除的元素,原数组会发生变化
    unshift()  在数组的开头添加元素,返回数组的长度,原数组会发生变化
    shift()       删除数组开头的一个元素,返回删除的元素,原数组会发生变化
    indexOf()    查找数组中是否含有某个元素,返回的是下标,如果找不到返回-1
 
2.清空数组
    给数组长度设置为0
    数组.length = 0
 
3.二维数组
    数组中的元素还是数组,用于对数据进行二次分类
    [ [元素1,元素2],[元素3,元素4]... ]
    访问
        数组[下标][下标]
 
字符串对象
    包装对象:目的是为了让原始类型的数据像引用类型数据一样,具有属性和方法,JS下有三种包装对象,分别是字符串对象、数值对象、布尔对象
    new String()    将字符串包装为对象
    String()    将一个值强制转换为字符串
 
    1.转义字符 —— \
        改变字符本身的意义
        \’   将具有特殊意义单引号转义为普通的引号
        \t     将字符t转义为制表符(Tab键,出现多个连续空格)
        \n    将字符n转义为换行符
 
练习:打印输入以下字符串
C:\Users\Admin
console.log('C:\\Users\\Admin');
 
    2.API
        length    获取字符串长度
        charAt()    获取下标对应的字符,也可以使用数组的方式        字符串[下标]
 
练习:遍历字符串javascript,统计出字符a出现的次数
indexOf()    查找字符串中是否含有某个字符串,返回的是第一个的下标
lastIndexOf()   查找字符串中是否含有某个字符串,返回的是最后一个下标,找不到返回-1
 
练习:声明变量保存用户输入的邮箱,如果邮箱中不含有@,打印'非法的邮箱'
        var email = 'asda#qq.com';
        if(email.indexOf('@') === -1) {
            console.log('非法的邮箱');
        }
 
        
        toUpperCase()    英文字母转大写
        toLowerCase()    英文字母转小写
 
字符串中所有的API都不会对原来的字符串产生影响
    slice(start,end)    截取字符串,start开始的下标,end结束的下标,end为空截取到最后,下标为负数表示倒数
 
练习:声明变量保存一个邮箱,分别截取邮箱的用户名和密码,最后打印'用户名:xxx域名:xxx'
        var email = '134324324@qq.com';
        //查找@的下标
        var index = email.indexOf('@');
        //截取用户名
        var user = email.slice(0,index);
        //截取域名
        var domain = email.slice(index+1);
        console.log('用户名:'+ user + '  域名:' + domain);
 
 
    split()    将字符串转为数组,需要指定分割的符号
 
练习:声明变量保存字符串,翻转字符串
    abcd -> dcba    
 
        var str = 'abcd';
        console.log(str.split('').reverse().join(''));
 
Math对象
    提供一组数学相关的API
     是一个特殊的对象,不需要创建就可以直接调用API
        random()    获取一个随机数    范围 >= 0   <1
        var arr = ['路飞', '索隆', '艾斯', '乌索普', '乔巴', '娜美'];
        var n = parseInt(Math.random() * arr.length)
        console.log(arr[n]);
    PI               获取圆周率
    abs()          获取绝对值
    ceil()          向上取整
    floor()        向下取整
    round()      四舍五入取整
    pow(x,y)     计算x的y次方
    max()         获取一组数字最大值,暂时不能使用数组
    min()          获取一组数字最小值,暂时不能使用数组
Date对象
    用于对日期时间的存储和计算
    
    1.创建
        new Date('2022/5/18 11:22:30')
        new Date(2022,4,18,11,22,30)    //月份的值是0~11    代表1~12月
        new Date(1689372000000)    //值代表时间戳,距离计算机元年的毫秒数
        new Date()    //存储的是当前操作系统的时间
 
    2.获取日期时间
        getFullYear() / getMonth() / getDate()
                            月份的值0~11,使用的时候需要加1
        getHours() / getMinutes() /getSeconds() / getMilliseconds()
                                                                                    毫秒
        getDay()    获取星期,范围0~6,代表 日~六
        getTime()    获取时间戳
 
    练习:创建Date 对象,保存当前操作系统时间,获取日期时间,打印以下格式
        ‘ 今天是xxxx年xx月xx日    星期x ’
        星期的值不能使用0~6,使用 日~六
        var now = new Date();
        var year = now.getFullYear();
        var month = now.getMonth()+1;
        var date = now.getDate();
        var day = now.getDay();
        //创建一个数组,包含 日~六  下标0~6
        var arr = ['日','一','二','三','四','五','六'];
        //arr[day]
        if(month < 10) {
            month= '0' + month;
        }
        if(date < 10) {
            date = '0'+ date;
        }
        console.log('今天是'+year+'年'+month+'月'+date+'日  星期'+arr[day]);
 
        3.转为本地字符串格式
            存在兼容性问题,只能用于调试部分
            toLocaleString()    
 
        4.设置日期时间(修改)
            setFullYear() / setMonth() / setDate()
            setHours() / setMinutes() / setSeconds() / setMilliseconds()
                                                                                        毫秒
            setTime()    设置时间戳,会产生一个具体的日期时间
 
练习:设置为2小时以后,设置为3天后
        var d = new Date();
        d.setDate(d.getDate()+3);
        d.setHours(d.getHours()+2);
        console.log(d.toLocaleString());
 
        5.拷贝Date对象
            new Date(Date 对象)    把要拷贝的 Date 对象作为参数传递
 
练习:创建一个 Date 对象,保存一个员工的入职时间(2022/9/12),假设合同期为3年,计算出到期时间;合同到期前一个月,发起续签,计算出续签时间。最后打印出三个时间的字符串格式
        入职时间:
        到期时间:
        续签时间:
        //创建Date对象,保存入职时间
        var d1 = new Date('2022/9/12');
        //拷贝一份入职时间,保存到期时间
        var d2 = new Date(d1);
        //3年后合同到期
        d2.setFullYear(d2.getFullYear()+3);
        //拷贝一份到期时间,保存续签时间
        var d3 = new Date(d2);
        //提前一个月
        d3.setMonth(d3.getMonth()-1);
        console.log('入职时间:'+ d1.toLocaleString());
        console.log('到期时间:'+ d2.toLocaleString());
        console.log('续签时间:'+ d3.toLocaleString());
 
Number对象
    new Number()    将一个数字包装为对象
    Number()    将一个值强制转换为数值
    toFixed(n)    保留小数点后 n 位
 
Boolean对象
    new Boolean()    将一个布尔值包装为对象
     Boolean()    将一个值强制转换为布尔值
     !!值    将一个值隐式转换为布尔值
 
错误处理
    1.常见的错误
        语法错误(SyntaxError):代码书写格式不符合语法规范,例如出现了中文符号,缺少半块括号...
        引用错误(ReferenceError):使用了未声明的变量
        类型错误(TypeError):调用的函数或者方法不是一个函数类型
        自定义错误:程序员自己指定的错误        throw    错误内容
    
     2.错误处理
        即使出现了错误,也不会影响后续代码的执行
 
try {
    尝试执行,可能有错误,出错后不影响后续代码执行
} catch(err) {
    捕获try 中错误,将错误收集到err中
    解决错误
}
posted on 2022-07-28 09:49  天天下雨  阅读(124)  评论(0编辑  收藏  举报