JavaScript的第六天

目录

一、数学对象

        Math数学对象不是一个构造函数 ,所以我们不需要使用 new 来调用,而是直接使用里面的属性和方法即可。

       

        1、利用对象封装自定义的数学对象,里面的函数值可以进行定义

        2、Math的绝对值和三个取整方式

        (1)Math.abs(),取绝对值

        (2)Math.floor() ,不论小数,向下取整       

        (3)Math.ceil(),不论小数,向上取整

        (4)Math.round(),四舍五入

        3、随机数 :Math.random()

二、日期对象:Date()     

        1、使用 new 关键字调用构造函数内的 Date()来创建一个日期对象

        2、格式化日期

                对年月日进行实例化

        对时分秒进行实例化

        获得Date总的毫秒数(时间戳)

三、数组

        1、创建数组的两种方法

        2、检测是否为数组的方法

        3、获取数组的索引方法

数组去重

       

         4、基本包装类型

字符串具有不可变性

四、字符串 

        1、根据字符返回位置寻找字符串对象

        2、查找字符串中某个字符出现的次数

        3、根据位置返回字符

                (1)charAt(index) 根据位置返回字符

                (2)charCodeAt(index)

                (3)arr.[index]

       

         4、字符串的操作方法

五、简单数据类型和复杂素具类型的一些补充


一、数学对象

        Math数学对象不是一个构造函数 ,所以我们不需要使用 new 来调用,而是直接使用里面的属性和方法即可。

       

        1、利用对象封装自定义的数学对象,里面的函数值可以进行定义

        var obj = {
            max: function (a, b, c, d) {
                return Math.max(a, b, c, d)
            },
            min: function (a, b, c, d) {
                return Math.min(a, b, c, d)
            }
        }
        console.log(obj.max(1, 3, 5, 7));
        console.log(obj.min(1, 3, 5, 7));

        console.log(Math.max([1, 4, 7, 9]));

        2、Math的绝对值和三个取整方式

        (1)Math.abs(),取绝对值
console.log(Math.abs(5));    //输出结果为5
console.log(Math.abs(-5));   //输出结果为5
        (2)Math.floor() ,不论小数,向下取整       
        var a = 3.5;
        console.log(Math.floor(a));
        //输出结果为3
        (3)Math.ceil(),不论小数,向上取整
        var a = 3.5;
        console.log(Math.ceil(a));
        //输出结果为4
        (4)Math.round(),四舍五入
        var a = 3.5;
        console.log(Math.round(a));
        //输出结果为4

        var a = 3.4;
        console.log(Math.round(a));
        //输出结果为3

        3、随机数 :Math.random()

                使用Math.random()随机返回一个在0-1区间(左闭右开,可以取到左边的值取不到右边的值)内的小数。

        创建一个随机数和随机点名


     //我们想要得到20-50的随机整数并包含这2个整数
     //Math.floor(Math.random() * (max - min + 1) + min)
    //随机数
      Math.floor(Math.random() * (50 - 30 + 1) + 30)


        //随机点名 
        var arr = ["a", "b", "c", "d"]
        console.log(Math.floor(Math.random() * 4));
        console.log(arr[Math.floor(Math.random() * 4)]);

二、日期对象:Date()     

        1、使用 new 关键字调用构造函数内的 Date()来创建一个日期对象

        使用 Date()时,如果没有添加参数,则返回当前系统的当前时间

                参数常用的写法为字符串型:'2023-01-1 8:8:8'

        var date = new Date()
        console.log(date);
        //返回当前时间

        var date1 = new Date("2000/1/1 00:00:00")
        console.log(date1);
        //返回2000/1/1 00:00:00

        2、格式化日期

                对年月日进行实例化
        // 年     getFullYear()
        // 月     getMonth()
        // 日     getDate()
        // 星期   getDay()

        var now = new Date()
        var year = now.getFullYear()
        var month = now.getMonth() + 1
        var day = now.getDate()
        var week = now.getDay()

        console.log(now);
        console.log(year);
        console.log(month);
        console.log(day);
        console.log(week);
        week = ["日", "一", "二", "三", "四", "五", "六"][week]

        alert("今天是" + year + "年" + month + "月" + day + "号,星期" + week)
        对时分秒进行实例化
        var now = new Date()
        var year = now.getFullYear()
        var month = now.getMonth() + 1
        if (month < 10) month = "0" + month
        var day = now.getDate()
        if (day < 10) day = "0" + day
        var week = now.getDay()
        week = ["日", "一", "二", "三", "四", "五", "六"][week]

        var hours = now.getHours()
        if (hours < 10) hours = "0" + hours
        var minutes = now.getMinutes()
        if (minutes < 10) minutes = "0" + minutes
        var seconds = now.getSeconds()
        if (seconds < 10) seconds = "0" + seconds
        console.log(hours, minutes);
        console.log(seconds);

        // 2024/10/22 00:00:00
        alert("今天是" + year + "/" + month + 
            "/" + day + " " + hours + ":" + minutes + ":"
             + seconds + " 星期" + week)

        alert(`今天是${year}/${month}/${day} ${hours}:
            ${minutes}:${seconds} 星期${week}`)

        获得Date总的毫秒数(时间戳)
    var a = new Date(); // 创建一个新的Date对象,表示当前日期和时间

    console.log(+new Date()); // 使用一元加号操作符将Date对象转换为毫秒数
    console.log(a.valueOf()); // 调用Date对象的valueOf方法获取毫秒数
    console.log(a.getTime()); // 调用Date对象的getTime方法获取毫秒数
    console.log(Date.now()); // 使用Date类的静态方法now获取当前时间的毫秒数

三、数组

        1、创建数组的两种方法

                使用字面量创建 或 使用 new 关键字声明构造函数 Array来进行创建

        2、检测是否为数组的方法

                (1)使用 .isArray 来进行检测,返回一个boolean值

                (2)使用 instaceof 来检测是否为该引用的数据类型,但是不能检测基础数据类型和跨窗口或跨框架的数据

        var arr = []
        console.log(arr instanceof Array);
        console.log(Array.isArray(arr));

                (3)使用 Object.prototype.toString.call()来检测各种数据类型

console.log(Object.prototype.toString.call(123)); // "[object Number]"
console.log(Object.prototype.toString.call("hello")); // "[object String]"
console.log(Object.prototype.toString.call(true)); // "[object Boolean]"
console.log(Object.prototype.toString.call(undefined)); // "[object Undefined]"
console.log(Object.prototype.toString.call(null)); // "[object Null]"

console.log(Object.prototype.toString.call([])); // "[object Array]"
console.log(Object.prototype.toString.call({})); // "[object Object]"
console.log(Object.prototype.toString.call(new Date())); // "[object Date]"
console.log(Object.prototype.toString.call(/abc/)); // "[object RegExp]"
console.log(Object.prototype.toString.call(function() {})); // "[object Function]"

        3、获取数组的索引方法

                返回数组元素索引号方法  indexOf(数组元素),作用就是返回所需要查询的该数组元素的索引号。

                它只返回第一个满足条件的索引号,如果在该数组里面找不到元素,则返回的是 -1  

        // 返回数组元素索引号方法  lastIndexOf(数组元素)  
        // 作用就是返回该数组元素的索引号 从后面开始查找

        var arr1 = ['中午不睡觉', '下午犯困', '中午不睡觉', 
                    '上眼皮和下眼皮', '中午不睡觉'];

        console.log(arr1.indexOf('中午不睡觉'));
数组去重

         ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'] 要求去除数组中重复的元素。

        1.目标: 把旧数组里面不重复的元素选取出来放到新数组中, 重复的元素只保留一个, 放到新数组中去重。

        2.核心算法: 我们遍历旧数组, 然后拿着旧数组元素去查询新数组, 如果该元素在新数组里面没有出现过, 我们就添加, 否则不添加。

        3.我们怎么知道该元素没有存在? 利用新数组.indexOf(数组元素),如果返回时 - 1 就说明,新数组里面没有该元素

        var arr = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']
        var newArr = []
        for (var i = 0; i < arr.length; i++) {
            if (newArr.indexOf(arr[i]) == -1) newArr.push(arr[i])
            //检测数组内是否含有重复的值,当indexof的返回值为-1时
            //if进行判断新数组内没有该数字,对其进行插入
        }
        console.log(newArr);

       

         4、基本包装类型

        对象和复杂数据类型才有属性和方法,而基本包装类型就是将基础数据类型包装成为复杂数据类型              

        // (1) 把简单数据类型包装为复杂数据类型
        str = new String(str)

        // (2) 销毁这个临时变量
        str = null

字符串具有不可变性

四、字符串 

        1、根据字符返回位置寻找字符串对象

    // 字符串对象  根据字符返回位置  str.indexOf('要查找的字符', 起始的位置)
    // 从索引号是 3的位置开始往后查找
    var str = "abcdefgabcdefga"
    console.log(str.indexOf("a", 8));

        2、查找字符串中某个字符出现的次数


        var str = "oabcoefoxyozzopp"

        var newArr = []
        for (var i = 0; i < str.length; i++) {
            if (newArr.indexOf(str[i]) == -1) newArr.push(str[i])
        }
        console.log(newArr);

        for (var i = 0; i < newArr.length; i++) {
            // console.log(str[3]);
            var arr = []
            for (var i = 0; i < newArr.length; i++) {
                if (str[i] == newArr[i]) {
                    arr.push(i)
                }
            }
            console.log(arr);
            console.log(arr.length);
            // arr.
        }

        3、根据位置返回字符

                (1)charAt(index) 根据位置返回字符
        var str = "abcdefg"
        console.log(str.charAt(0));
                (2)charCodeAt(index)
        var str = "abcdefg"       
        console.log(str.charCodeAt(3));
                (3)arr.[index]
        var str = "abcdefg"        
        console.log(str[4]);

       

         4、字符串的操作方法


    // 1. concat('字符串1','字符串2'....)
    var str = "abcdeFAGBghijcklmnaa"
    var str1 = "cdf"
    console.log(str.concat(str1));



    // 2. substr('截取的起始位置', '截取几个字符');
    // 第一个2 是索引号的2 从第几个开始  第二个2 是取几个字符
    //substring(4, 6)  slice(4, 6)
    console.log(str.substr(2, 3));
    console.log(str.substring(2, 3));
    console.log(str.slice(2, 3));





    //replace  替换  第一个参数是被替换的元素,第二个是要替换的元素  
    //只替换第一个查找到的元素
    //replaceAll 替换全部
    console.log(str.replaceAll("a", "z"));

    console.log(str);


    //split   切割成字符串列表,返回一个新的数组
    console.log(str.split(''));

    console.log(str.split("").reverse().join(""));



    //toUpperCase  英文字母全大写
    //toLowerCase  英文字母全小写
    console.log(str.toUpperCase());
    console.log(str.toLowerCase());

concat('字符串1','字符串2'....)

拼接两个字符串

substr('截取的起始位置', '截取几个字符')

从索引位置开始截取几个字符

replace("a", "z")

替换,第一个参数是被替换的元素,第二个是要替换的元素(只替换第一个查找到的元素)

replaceAll ("a", "z")

替换所有查找到的元素

split('"')

切割成字符串列表,返回一个新的数组

substring(a, b)

截取在这个区间内的字符,区间左闭右开

slice(a, b)

截取在这个区间内的字符,区间左闭右开

toUpperCase

英文字母全大写

toLowerCase

英文字母全小写

五、简单数据类型和复杂素具类型的一些补充

        1. 简单数据类型 是存放在栈里面 里面直接开辟一个空间存放的是值

        2. 复杂数据类型 首先在栈里面存放地址 十六进制表示  然后这个地址指向堆里面的数据

且需要注意字符的不可变性,在进行传参的时候变量所代表的值也不同。

        // 简单数据类型传参
        function fn(a, b) {
            a += b//4 3
            console.log(a, b);
        }
        var a = 1, b = 3
        fn(a, b)
        console.log(a, b);
        //a=4,b=3
        //a=1,b=3





        // 复杂数据类型传参
        function fn(obj) {
            obj.name = "b"
            console.log(obj);
        }
        var obj = {
            name: "a",
            ahe: 18
        }
        // fn(obj)
        // console.log(obj);

        var obj1 = obj
        obj1.name = "b"
        console.log(obj);
        console.log(obj1);
        //obj1和obj的结果都为
        //ahe=18
        //name=b
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值