登录
原创

JavaScript-内置对象

发布于 2021-06-25 阅读 353
  • 前端
  • JavaScript
原创

Math对象

是一个对象,可以直接调用其方法

最大值,最小值

Math.max()- - -获取数中的最大值
Math.min()- - -获取数中的最小值

如果()里面什么都不写,会返回 -Infinity
如果()里面有非数值的,字符串型数值会自动转换成数字,其他的话,结果会返回NaN

eg:

<script>
        var max = Math.max(3, 5, 99, 10, 66);
        console.log(max);

        var min = Math.min(99, 80, 23, 18, 6);
        console.log(min);

        console.log(Math.max(3, 9, '榴莲'));
        console.log(Math.max());
        console.log(Math.max(1, '9'));
</script>

结果:

image.png

绝对值

Math.abs()返回数字绝对值,
括号里是非数字时:
null- - -返回0
什么都不写- - -返回NaN
数字型字符串- - -返回对应数字的绝对值
其他类型字符串- - -返回NaN

eg:

<script>
        console.log(Math.abs(-1));
        console.log(Math.abs(9));
        console.log(Math.abs(null));
        console.log(Math.abs());
        console.log(Math.abs('lili'));
        console.log(Math.abs('666'));
        console.log(Math.abs('-666'));
</script>

结果:

image.png

取整数

Math.floor()- - -向下取整
Math.ceil()- - -向上取整
Math.round()- - -四舍五入取整

注意:Math.round()取整时,.5比较特别,是往大1的取,不遵守四舍五入,负数取整时尤其要注意.5的情况

eg:

<script>
        console.log(Math.floor(2.1));
        console.log(Math.floor(2.9));
        console.log(Math.ceil(3.1));
        console.log(Math.ceil(3.9));
        console.log(Math.round(1.5));
        console.log(Math.round(-1.5));
        console.log(Math.round(-1.6));
</script>

结果为:

image.png

获取随机数

Math.random() 可以获取[0, 1)之间的一个随机数,包含0,不包含1

获取一个范围内的随机整数:

<script>
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
        }

        // 例如生成一个[2, 9]之间的随机整数
        console.log(getRandom(2, 9));
</script>

猜字游戏

猜一个【1~10】之间的数字,让用户输入猜的数:
如果猜大了,提示大了并重新输入;
如果猜小了,提示小了并重新输入;
如果猜对了,提示猜中了,结束程序;

代码示例:

<script>
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1) + min);
        }

        var rand = getRandom(1, 10);

        var number = prompt('猜一个1~10之间的数字,请输入你猜的数字:');

        while (true) {
            if (number > rand) {
                number = prompt('大了,请重猜:');
            } else if (number < rand) {
                number = prompt('小了,请重猜:');
            } else {
                alert('真棒,猜对啦!');
                break;
            }
        }
</script>

Date对象

是一个构造函数,需要通过new Date() 创建一个新的对象,然后创建的对象来调用日期方法

返回当前时间的日期

<script>
        var date = new Date();
</script>

返回设定的时间的日期

Date()里面可以传参,传的数字型的日期参数的话,传月份参数时,返回的月份比传的月份参数要多1,因为数字型参数是用 getMonth() 处理的,getMonth() 处理月份是以 [0,11] 处理的

<script>
        /* 
        new 的时候也可以在构造函数Date()写日期参数,一般有 数字型 2021, 6, 25  或 字符串型 ‘ 2021-6-25 10:12:13 ’这种格式 
        注意new Date(2021, 6, 25)这种格式返回的是7月,比6月多一个月
        常用字符串型的
        */
        var date2 = new Date(2021, 6, 25);
        
        var date3 = new Date('2021-6-25 10:12:13');
</script>

返回当前时间时间戳(总毫秒数)

时间戳(总毫秒数):从1970年1月1日 00:00:00 起 经过的毫秒数

<script>
        // 创建日期对象
        var date = new Date();

        // 方法1:
        var time1 = date.valueOf();

        // 方法2
        var time2 = date.getTime();

        // 方法3
        var time3 = +new Date();

        // 方法4
        var time4 = Date.now();   
</script>

日期格式化

有的时候需要自己定义日期的显示格式,可以分别获取日期的- - -年、月、日、时、分、秒,然后组装成想要的格式

获取方式:

年- - -日期对象.getFullYear()
月- - -日期对象.getMonth()
日- - -日期对象.getDate()
时- - -日期对象.getHours()
分- - -日期对象.getMinutes()
秒- - -日期对象.getSeconds()

示例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Date对象</title>
    <script>
        // 使用Date对象需要 new ,通过Date构造函数来创建一个新的Date对象
        // 返回当前时间
        var date1 = new Date();
        console.log(date1);

        // 返回当前时间的时间戳(总毫秒数),从1970年1月1日起经过的的毫秒数
        // 方法1:
        console.log(date1.valueOf());
        // 方法2
        console.log(date1.getTime());
        // 方法3
        var date2 = +new Date();
        console.log(date2);
        // 方法4
        console.log(Date.now());

        /* 
        new 的时候也可以在构造函数Date()写日期参数,一般有 数字型 2021, 6, 25  或 字符串型 ‘ 2021-6-25 10:12:13 ’这种格式 
        注意new Date(2021, 6, 25)这种格式返回的是5月,比6月少一个月
        常用字符串型的
        */
        var date3 = new Date(2021, 6, 25);
        console.log(date3);
        var date4 = new Date('2021-6-25 10:12:13');
        console.log(date4);

        // 日期格式化
        var date = new Date();
        // 获取年、月、日、时、分、秒
        var year = date.getFullYear();
        var month = date.getMonth() + 1; // getMonth()获取月份[0,11],返回的月份比实际小1,所以要加1
        month = month < 10 ? '0' + month : month; // 如果是个位数,就补 0
        var day = date.getDate();
        day = day < 10 ? '0' + day : day;
        var hour = date.getHours();
        hour = hour < 10 ? '0' + hour : hour;
        var minutes = date.getMinutes();
        minutes = minutes < 10 ? '0' + minutes : minutes;
        var seconds = date.getSeconds();
        seconds = seconds < 10 ? '0' + seconds : seconds;
        // 根据需要组装成所需的日期格式
        console.log(year + '-' + month + '-' + day + ' ' + hour + ':' + minutes + ':' + seconds);
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

数组对象

创建数组

方式一:字面量
// 利用数组字面量 [] 创建数组
var arr = [2, 6, 8];
方式二:new Array()
// 创建一个空数组
var arr1 = new Array();
// 创建一个长度为 5 的数组,里面有 5 个空的数组元素
var arr2 = new Array(5);
// 创建一个里面有 5 个元素的数组,等价于 var arr = [5, 6, 7, 8, 10];
var arr3 = new Array(5, 6, 7, 8, 10); 
注意:new Array(数字) 里面只有一个数字的时候,该数字代表数组的长度,而不是创建一个数组元素为该数字的数组

检测是否为数组

instanceof

eg:

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

eg:

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

添加、删除数组元素

添加数组元素:push()、unshift()
push()- - -在数组末尾添加一个或多个元素,返回值为添加元素后的数组长度
unshift()- - -在数组开头添加一个或多个元素,返回值为添加元素后的数组长度

删除数组元素:pop()、shift()
pop()- - -删除数组末尾一个元素,返回值为被删除的元素值
shift()- - -删除数组开头一个元素,返回值为被删除的元素值

注意:push()、unshift()、pop()、shift()都是对原数组进行操作

eg:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>内置对象-数组</title>
    <script>
        var arr = [];
        console.log(Array.isArray(arr));

        // 添加数组元素
        var arr1 = ['苹果', '香蕉', '橙子'];
        console.log(arr1);
        // arr1.push('芒果', '榴莲');
        console.log(arr1.push('芒果', '榴莲'));
        console.log(arr1);
        // arr1.unshift('火龙果', '西瓜');
        console.log(arr1.unshift('火龙果', '西瓜'));
        console.log(arr1);

        // 删除数组元素
        var arr2 = [1, 3, 6, 8, 9, 11, 13, 22];
        console.log(arr2);
        // arr2.pop();
        console.log(arr2.pop());
        console.log(arr2);
        // arr2.shift();
        console.log(arr2.shift());
        console.log(arr2);
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

示例:筛选数组
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /* 
                有一个包含工资的数组[1500, 1200, 2000, 2100, 1800],
                要求把数组中超过2000的删除,剩余的放到新数组里面
                */

        var arr = [1500, 1200, 2000, 2100, 1800];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < 2000) {
                //    newArr[newArr.length] = arr[i];
                newArr.push(arr[i]);
            }
        }

        console.log(newArr);
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

数组排序

翻转数组:reverse()
升序/降序排序:sort()

注意:sort()排序,默认的,非个位数之间比较的时候,是从第一位开始,如果第一位的值大一些就认为大一些,所以排序可能会乱,想要的带正常的排序顺序要加上一个函数,如下:

image.png

获取数组索引:indexOf()、lastIndexOf()

indexOf(元素值)- - -数组中第一次出现该值的索引,从前往后找,没有找到返回-1
lastIndexOf(元素值)- - -数组中最后一次出现该值的索引,从后往前找,没有找到返回-1

eg:

image.png

示例:数组去重
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>数组去重</title>
    <script>
        // 有一个数组['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'],要求去除数组中的重复的元素
        var arr = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']);
        console.log(arr);
        var arr1 = unique(['榴莲', '苹果', '橙子', '榴莲']);
        console.log(arr1);


        function unique(arr) {
            var newArr = [];
            for (var i = 0; i < arr.length; i++) {
                if (newArr.indexOf(arr[i]) === -1) {
                    newArr.push(arr[i]);
                }
            }
            return newArr;
        }
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

数组转换成字符串:toString()、join()

toString()- - -返回一个元素以逗号分隔的字符串

join()- - -括号里可以填写分隔符,返回元素以该分隔符隔开的字符串
如果括号里面没写的话,效果和toString()一样,以逗号分隔

eg:

image.png

合并多个数组:concat()

返回一个新的数组,对原来的数组没影响

eg:

image.png

截取数组:slice()、splice()

slice()- - -slice(a),代表从 索引 a 开始,一直截取到数组最后

    • – - – - -slice(a, b),代表从 索引 a 开始,一直截取到 索引 b-1,b为负值的话,代表从后往前数的第几个,例如-2代表倒数第二个

返回的是一个新的数组,不会对原数组产生影响

eg:

image.png

splice()- - -可以添加,也可以删除数组元素,对原数组进行操作,原数组受影响

splice(开始位置, 要删除的个数, 要添加的元素值)
开始位置可以是正数,也可以是负数,正数代表索引,负数代表倒数第几个,如果正数的值大于数组长度,则代表从数组末尾开始,如果负数的绝对值大于数组长度,则代表从开头开始

要删除的个数:0或负数- - -代表不删除;正数代表要删除个数,正数值大于开始位置后面的元素个数时,代表从开始位置,后面的全部都删除

要添加的值:不写时代表不添加,可以写多个,添加多个数组元素

eg:

image.png

字符串对象

字符串是基本类型,但是可以使用一些属性和方法,原因是创建字符串时,自动将其类包装了

注意:对字符操作后,其实没有改变原来的字符串,是生成了一个新的字符串

<script>
        var str = '今儿个天气还不错';

        /* 相当于以下三句
        var temp = new String('今儿个天气还不错');
        str = temp;
        temp = null; */
</script>

获取字符串长度:length属性

字符串.length

返回字符位置:indexOf()

eg:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>字符串-返回字符位置</title>
    <script>
        // 查找字符串“abcoefoxyozzopp”中所有o出现的位置及次数

        var str = 'abcoefoxyozzopp';
        var index = str.indexOf('o');
        var num = 0;
        while (index !== -1) {
            num++;
            console.log(index);
            index = str.indexOf('o', index + 1);
        }
        console.log('o出现的次数是:' + num);
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

根据位置返回字符:charAt()、charCodeAt()、字符串[位置]

charAt() 和 字符串[位置] 效果一样,知识兼容性不一样,str[位置]是H5有的
charCodeAt() 返回的是字符对应的 ASCII码

eg:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>根据位置返回字符</title>
    <script>
        var str = '今儿个天气还不错';

        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }

        console.log(str.charCodeAt(0));
        for (var i = 0; i < str.length; i++) {
            console.log(str[i]);
        }
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

拼接及截取字符串

拼接字符串:contact()

字符串1.contact(字符串2,字符串3、、、)
contact()里面可以写一或多个字符串

常用的还是用 + 来连接字符串

截取字符串:substr()、slice()、substring()

MDN网站上显示substr()没有严格被废弃,但是被认为是遗留的函数并且可以的话尽量避免使用。它并非JavaScript核心语言的一部分,未来可能会被移除掉。可以的话,使用substring()替代它

使用方法:
①substr(开始位置, 截取个数)- - -
开始位置可以是正值或负值,正值代表从该索引开始(包含该索引位置),向后截取,
负值,代表 字符串长度 + 负值 得到的索引位置(包含该索引位置),向后截取

截取个数可以接收:正数、0、负数,但是 0 和 负数的情况,代表不截取,返回一个空的字符串;如果不写截取个数,代表截取到字符串结尾

②slice(开始索引, 结束索引)- - -
从开始索引位置开始,截取到 结束索引 前一位

如果索引为负值,索引 = 字符串长度 + 负值

结束索引可以不写,代表一致截取到字符串最后

对原来的字符串没有影响,返回一个新的字符串

③substring(开始位置, 结束位置)- - -
从开始位置索引开始,到结束位置索引前一个

不论是开始还是结束,如果有 负值 或者 NaN 都会转化成 0

两者可以互换顺序,小的值为开始位置,大的值为结束位置

如果只写开始位置,代表一直截取到字符串最后

对字符串没有影响,返回的一个新字符串。

代码示例
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>字符串操作方法</title>
    <script>
        // 连接多个字符串。拼接字符串,等效于+,+更常用
        var str1 = '今天是';
        var str2 = '大太阳';
        var str3 = '呀!';
        var newStr = str1.concat(str2, str3);
        console.log(newStr);

        /*  
         截取字符串
          1.substr(开始位置, 截取个数)

          2.slice(开始位置索引号, 结束位置索引号) ,截取到--结束位置索引号前一个

          3.substring(开始位置, 结束位置),截取到--结束位置索引号前一个;基本和slice相同,但是不接受复制 
          */
        var str = 'Even though it may seem silly or wrong, you must try.';
        console.log('字符串长度为:' + str.length);
        var newStr1 = str.substr(40, 12);
        console.log(newStr1);
        var newStr2 = str.substr(-13, 12);
        console.log(newStr2);
        var newStr3 = str.substr(2, 0);
        console.log(newStr3);
        var newStr4 = str.substr(3, -9);
        console.log(newStr4);
        var newStr5 = str.substr(12);
        console.log(newStr5);
        console.log(str);

        var stri = 'Boys, you must strive to find your own voice.';
        console.log('字符串的长度为:' + stri.length);
        var stri1 = stri.slice(6);
        // console.log(stri[25]);
        console.log(stri1);
        var stri2 = stri.slice(25, -1);
        console.log(stri2);
        var stri3 = stri.slice(25, 44);
        console.log(stri3);
        console.log(stri);

        var strin = '文明其思想,野蛮其体魄。';
        var strin1 = strin.substring(0);
        console.log(strin1);

        // 以下都输出 '文明其思想'
        var strin2 = strin.substring(0, 5);
        console.log(strin2);
        var strin3 = strin.substring(5, 0);
        console.log(strin3);
        var strin4 = strin.substring(5, NaN);
        console.log(strin4);
        var strin5 = strin.substring(NaN, 5);
        console.log(strin4);

        // 野蛮其体魄(。)
        var strin6 = strin.substring(6);
        console.log(strin6);
        var strin7 = strin.substring(6, 11);
        console.log(strin7);
        var strin8 = strin.substring(11, 6);
        console.log(strin7);

        console.log(strin);
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

替换字符串:replace()

字符串.replace(要替换的字符串,目标字符串)

不会影响原来的字符串,会返回一个新的字符串

eg:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>替换字符串</title>
    <script>
        var str = '这个文具盒感觉是流线型的';
        var newStr = str.replace('感觉是流线型的', '想要飞向天空');
        console.log(newStr);
        console.log(str);
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

字符串转换成数组:split()

字符串.split(分隔符)

没有写分隔符的话就是转换成只有一个,以该字符串为值的数组

eg:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        var str = '史迪仔*蓝胖子*皮卡丘*小狐狸*猫咪老师*龙猫*小白龙';
        console.log(str.split('*'));
        console.log(str);

        var str1 = '红橙黄绿青蓝紫';
        console.log(str1.split());
    
    </script>
</head>

<body>

</body>

</html>

打印结果:

image.png

评论区

零00
7粉丝

时光荏苒,我自清欢

0

0

0

举报