【JavaScript】5.JavaScript内置对象

news2025/2/25 12:30:41

JavaScript 内置对象

  • JavaScript 中的对象分为3种
    • 自定义对象
    • 内置对象
    • 浏览器对象

前面两种对象是JS 基础 内容,属于 ECMAScript; 第三个浏览器对象属于JS 独有的

内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)

内置对象最大的优点就是帮助快速开发

JavaScript 提供了多个内置对象:Math、 Date 、Array、String等

1. Math对象

Math 对象不是构造函数,它具有数学常数和函数的属性和方法

跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员

1.1 Math数学对象

<!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>Math数学对象</title>
    <script>
        console.log('圆周率:' + Math.PI);
        console.log('3.7 向下取整:' + Math.floor(3.7));
        console.log('3.4 向下取整:' + Math.floor(3.4));
        console.log('3.4 向上取整:' + Math.ceil(3.4));
        console.log('3.7 向上取整:' + Math.ceil(3.7));
        console.log('-3.4 四舍五入版 就近取整:' + Math.round(-3.4)); // -3
        console.log('-3.5 四舍五入版 就近取整:' + Math.round(-3.5)); // 注意 -3.5   结果是  -3 
        console.log('-3.6 四舍五入版 就近取整:' + Math.round(-3.6)); // -4
        console.log('-3 绝对值:' + Math.abs(-3));
        console.log('3 绝对值:' + Math.abs(3));
        console.log('10, 20, 30 最大值 ' + Math.max(10, 20, 30));
        console.log('10, 20, 30 最小值 ' + Math.min(10, 20, 30));
    </script>
</head>

<body>
</body>

</html>

在这里插入图片描述

1.2 封装自己的数学对象

利用对象封装自己的数学对象 里面有 PI 最大值和最小值

<!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 myMath = {
            PI: 3.141592653,
            myMax: function() {
                var max = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] > max) {
                        max = arguments[i];
                    }
                }
                return max;
            },
            myMin: function() {
                var min = arguments[0];
                for (var i = 1; i < arguments.length; i++) {
                    if (arguments[i] < min) {
                        min = arguments[i];
                    }
                }
                return min;
            }
        }

        console.log(myMath.PI);
        console.log(myMath.myMax(1, 5, 9));
        console.log(myMath.myMin(1, 5, 9));
    </script>
</head>
<body>
    <!-- 利用对象封装自己的数学对象 里面有 PI 最大值和最小值 -->
</body>
</html>

1.3 随机数方法 random()

random() 方法可以随机返回一个小数,其取值范围是 [0,1),左闭右开 0 <= x < 1

得到一个两数之间的随机整数,包括两个数在内

<!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>随机数方法 random()</title>
    <script>
        // Math对象随机数方法 random() 
        // 返回一个随机的小数  0 =< x < 1
        console.log(Math.random());

        // 得到一个两数之间的随机数
        // 这个值不小于 min(有可能等于),并且小于(不等于)max
        function getRandomArbitrary(min, max) {
            return Math.random() * (max - min) + min;
        }
        console.log(getRandomArbitrary(1, 8));

        // 得到一个两数之间的随机整数
        // 这个值不小于 min (如果 min 不是整数,则不小于 min 的向上取整数),且小于(不等于)max
        function getRandomInt(min, max) {
            min = Math.ceil(min);
            max = Math.floor(max);
            return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
        }
        console.log(getRandomInt(1, 5));

        // 得到一个两数之间的随机整数,包括两个数在内
        // Math.floor(Math.random() * (max - min + 1)) + min;
        function getRandomIntInclusive(min, max) {
            min = Math.ceil(min);
            max = Math.floor(max);
            return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值
        }
        console.log(getRandomIntInclusive(1, 20));

        // 随机点名
        var arr = ['zs', 'ls', 'ww', 'zl', 'sq', 'zb', 'wj', 'zs'];
        console.log(arr[0]);
        console.log(arr[getRandomIntInclusive(0, arr.length - 1)]);
    </script>
</head>

<body>

</body>

</html>

1.4 猜数字游戏

程序随机生成一个 1~ 10 之间的数字,并让用户输入一个数字

  1. 如果大于该数字,就提示,数字大了,继续猜
  2. 如果小于该数字,就提示数字小了,继续猜
  3. 如果等于该数字,就提示猜对了, 结束程序
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>猜数字游戏</title>
    <script>
        // 猜数字游戏
        function getRandom(min, max) {
            return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        var random = getRandom(1, 10);
        while (true) { // 死循环
            var num = prompt('你来猜? 输入1~10之间的一个数字');
            if (num > random) {
                alert('你猜大了');
            } else if (num < random) {
                alert('你猜小了');
            } else {
                alert('猜对了');
                break; // 退出整个循环结束程序
            }

        }
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

2. 日期对象

Date 对象是构造函数,需要实例化后才能使用

Date 实例用来处理日期和时间

2.1 Date() 方法的使用

<!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  如果没有参数 返回当前系统的当前时间
        var date1 = new Date();
        console.log(date1);

        // 参数常用的写法  数字型
        var date2 = new Date(2019, 9, 1);
        console.log(date2); // 返回的是 10月 不是 9月
        var date3 = new Date(2019, 1, 1);
        console.log(date3); // 返回的是 2月 不是 1月
        var date4 = new Date(2019, 12, 1);
        console.log(date4); // 返回的是 2020 年的 1 月 不是 2019 年 12 月
        
        // 参数常用的写法  字符串型
        var date5 = new Date('2019-10-1 8:8:8');
        console.log(date5);
    </script>
</head>
<body>
    
</body>
</html>

2.2 日期格式化

方法名说明
getFullYear获取当年
getMonth获取当月(0-11)
getDate()获取当天日期
getDay()获取星期几(周日0到周六6)
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>日期格式化</title>
    <script>
        // 日期格式化
        var date = new Date();
        console.log('获取当年:' + date.getFullYear());
        console.log('获取当月(0-11):' + date.getMonth());
        console.log('获取当天日期:' + date.getDate());
        console.log('获取星期几(0-6):' + date.getDay()); // 周日返回的是 0
        console.log('获取当前小时:' + date.getHours());
        console.log('获取当前分钟:' + date.getMinutes());
        console.log('获取当前秒钟:' + date.getSeconds());
    </script>
</head>
<body>
    
</body>
</html>

在这里插入图片描述

2.3 输出当前日期

<!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 date = new Date(2019, 7, 8);
        var year = date.getFullYear();
        var month = date.getMonth() + 1;
        var dates = date.getDate();
        var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'];
        var day = date.getDay();
        console.log('今天是:' + year + '年' + month + '月' + dates + '日 ' + arr[day]);
    </script>
</head>
<body>
    
</body>
</html>

在这里插入图片描述

2.4 输出当前时间

写一个函数,格式化日期对象,成为 HH:mm:ss 的形式 比如 00:10:45

<!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 date = new Date();
        console.log(date.getHours()); // 时
        console.log(date.getMinutes()); // 分
        console.log(date.getSeconds()); // 秒

        // 要求封装一个函数返回当前的时分秒 格式 08:08:08
        function ifda(params) {
            params = params < 10 ? '0' + params : params;
            return params
        }
        function nowTime() {
            var hours = date.getHours();
            var minutes = date.getMinutes();
            var seconds = date.getSeconds();
            return ifda(hours) + ' : ' + ifda(minutes) + ' : ' + ifda(seconds);
        }
        console.log(nowTime());
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

2.5 获得Date总的毫秒数

Date 对象是基于1970年1月1日(世界标准时间)起的毫秒数

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>获得Date总的毫秒数</title>
    <script>
        // 获得Date总的毫秒数(时间戳)  不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数
        
        // 通过 valueOf()  getTime()
        var date = new Date();
        console.log(date.valueOf()); // 就是 现在时间 距离1970.1.1 总的毫秒数
        console.log(date.getTime());
        
        // 简单的写法 (最常用的写法)
        var date1 = +new Date(); // +new Date()  返回的就是总的毫秒数
        console.log(date1);
        
        // H5 新增的 获得总的毫秒数
        console.log(Date.now());
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

2.6 倒计时效果

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>倒计时效果</title>
    <script>
        // 倒计时效果
        // 1.核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时 ,但是不能拿着时分秒相减,比如 05 分减去25分,结果会是负数的。
        // 2.用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
        // 3.把剩余时间总的毫秒数转换为天、时、分、秒 (时间戳转换为时分秒)
        // 转换公式如下: 
        //  d = parseInt(总秒数/ 60/60 /24);    //  计算天数
        //  h = parseInt(总秒数/ 60/60 %24)   //   计算小时
        //  m = parseInt(总秒数 /60 %60 );     //   计算分数
        //  s = parseInt(总秒数%60);            //   计算当前秒数
        function countDown(time) {
            var nowTime = +new Date(); // 返回的是当前时间总的毫秒数
            var inputTime = +new Date(time); // 返回的是用户输入时间总的毫秒数
            var times = (inputTime - nowTime) / 1000; // times是剩余时间总的秒数 
            var d = parseInt(times / 60 / 60 / 24); // 天
            d = d < 10 ? '0' + d : d;
            var h = parseInt(times / 60 / 60 % 24); //时
            h = h < 10 ? '0' + h : h;
            var m = parseInt(times / 60 % 60); // 分
            m = m < 10 ? '0' + m : m;
            var s = parseInt(times % 60); // 当前的秒
            s = s < 10 ? '0' + s : s;
            return d + '天' + h + '时' + m + '分' + s + '秒';
        }
        console.log(countDown('2023-2-16 18:00:00'));
        var date = new Date();
        console.log(date);
    </script>
</head>

<body>

</body>

</html>

3. 数组对象

3.1 创建数组的两种方式

  • 创建数组的两种方式
    • 利用数组字面量
    • 利用new Array()
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>创建数组的两种方式</title>
    <script>
        // 创建数组的两种方式
        // 利用数组字面量
        var arr = [1, 2, 3];
        console.log(arr[0]);

        // 利用new Array()
        var arr1 = new Array();  // 创建了一个空的数组
        console.log(arr2);

        var arr2 = new Array(2);  // 这个2 表示 数组的长度为 2  里面有2个空的数组元素 
        console.log(arr2);

        var arr3 = new Array(2, 3); // 等价于 [2,3]  这样写表示 里面有2个数组元素 是 2和3
        console.log(arr3);
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

3.2 检测是否为数组方法

  • instanceof 运算符,可以判断一个对象是否属于某种类型
  • Array.isArray() 用于判断一个对象是否为数组,isArray() 是 HTML5 中提供的方法
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>检测是否为数组方法</title>
    <script>
        var arr = [1, 23];
        var obj = {};

        // instanceof  运算符 它可以用来检测是否为数组
        console.log(arr instanceof Array); // true
        console.log(obj instanceof Array); // false

        // Array.isArray(参数);  H5新增的方法  ie9以上版本支持
        console.log(Array.isArray(arr)); // true
        console.log(Array.isArray(obj)); // false

        // 翻转数组
        function reverse(arr) {
            // if (arr instanceof Array) {
            if (Array.isArray(arr)) {
                var newArr = [];
                for (var i = arr.length - 1; i >= 0; i--) {
                    newArr[newArr.length] = arr[i];

                }
                return newArr;
            } else {
                return 'error 这个参数要求必须是数组格式 [1,2,3]'
            }
        }
        console.log(reverse([1, 2, 3]));
        console.log(reverse(1, 2, 3));
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

3.3 13-添加删除数组元素方法

方法名参数说明返回值
push()末尾添加一个或多个元素,注意修改原数组并返回新的长度
unshift()向数组的开头添加一个或更多元素,注意修改原数组并返回新的长度
pop()删除数组最后一个元素,把数组长度减1、修改原数组并返回删除的元素的值
shift()删除数组的第一个元素,数组长度减1、修改原数组并返回第一个元素的值
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>添加删除数组元素方法</title>
    <script>
        // 添加删除数组元素方法
        // push() 在数组的末尾 添加一个或者多个数组元素   push  推
        var arr1 = [1, 2, 3];
        // push() 参数直接写 数组元素就可以了
        arr1.push(4, 'ich');
        console.log('arr1 = [' + arr1 + ']');

        var arr2 = [1, 2, 3];
        // push完毕之后,返回的结果是 新数组的长度 
        console.log('arr2.length = ' + arr2.push(4, 'ich'));
        // 原数组也会发生变化
        console.log('arr2 = [' + arr2 + ']');

        var arr3 = [1, 2, 3];
        // unshift 在数组的开头 添加一个或者多个数组元素
        // unshift() 参数直接写 数组元素就可以了
        arr3.unshift(0);
        console.log('arr3 = [' + arr3 + ']');
        // unshift完毕之后,返回的结果是 新数组的长度 
        console.log('arr3.length = ' + arr3.unshift('red', 'purple'));
        // 原数组也会发生变化
        console.log('arr3 = [' + arr3 + ']');
        
        // pop() 可以删除数组的最后一个元素
        var arr4 = [1, 2, 3, 5, 'ich'];
        // pop是可以删除数组的最后一个元素 一次只能删除一个元素
        // pop() 没有参数
        arr4.pop();
        // pop完毕之后,返回的结果是 删除的那个元素 
        console.log('arr4 = [' + arr4 + ']');
        console.log(arr4.pop());
        // 原数组也会发生变化
        console.log('arr4 = [' + arr4 + ']');

        // shift() 它可以删除数组的第一个元素
        var arr5 = [1, 2, 3, 5, 'ich'];
        // shift是可以删除数组的第一个元素 一次只能删除一个元素
        // shift() 没有参数
        arr5.shift();
        console.log('arr5 = [' + arr5 + ']');
        // shift完毕之后,返回的结果是 删除的那个元素
        console.log(arr5.shift());
        // 原数组也会发生变化
        console.log('arr5 = [' + arr5 + ']');
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

3.4 筛选数组

有一个包含工资的数组[1500, 1200, 2000, 2100, 1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面

<!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 = [1500, 1200, 2000, 2100, 1800];
        var newArr = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < 2000) {
                newArr.push(arr[i]);
            }
        }
        console.log('newArr = [' + newArr + ']');
    </script>
</head>
<body>
    <!-- 
        有一个包含工资的数组[1500, 1200, 2000, 2100, 1800]
        要求把数组中工资超过2000的删除,剩余的放到新数组里面
     -->
</body>
</html>

在这里插入图片描述

3.5 数组排序

方法名说明是否修改原数组
reverse()颠倒数组中元素的顺序,无参数该方法会改变原来的数组返回新数组
sort()对数组的元素进行排序该方法会改变原来的数组返回新数组
<!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 = ['red', 'yellow', 'green'];
        arr.reverse();
        console.log(arr);

        // 数组排序(冒泡排序)
        var arr1 = [13, 4, 77, 1, 7];
        arr1.sort(function (a, b) {
             return a - b; // 升序的顺序排列
        });
        console.log('arr1 = [' + arr1 + ']');

        var arr2 = [13, 4, 77, 1, 7];
        arr2.sort(function (a, b) {
            return b - a; // 降序的顺序排列
        });
        console.log('arr2 = [' + arr2 + ']');
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

3.6 数组索引方法

方法名说明返回值
indexOf()数组中查找给定元素的第一个索引如果存在返回索引号如果不存在,则返回 -1
lastIndexOf()在数组中的最后一个的索引如果存在返回索引号如果不存在,则返回 -1
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>获取数组元素索引方法</title>
    <script>
        var arr1 = ['red', 'green', 'yellow'];
        console.log(arr1.indexOf('green')); // 1
        console.log(arr1.indexOf('blue')); // -1

        var arr2 = ['red', 'green', 'blue', 'yellow', 'blue'];
        console.log(arr2.lastIndexOf('blue')); // 4
        console.log(arr2.indexOf('gray')); // -1
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

3.7 数组去重

有一个数组[‘c’, ‘a’, ‘z’, ‘a’, ‘x’, ‘a’, ‘x’, ‘c’, ‘b’],要求去除数组中重复的元素

  • 分析:
    • 遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里面没有出现过,就添加,否则不添加
    • 利用 新数组.indexOf(数组元素) 如果返回时 -1 就说明 新数组里面没有该元素
<!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 arr1 = ['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'];
        var arr2 = [];
        for (var i = 0; i < arr1.length; i++) {
            if (arr2.indexOf(arr1[i]) == -1) {
                arr2.push(arr1[i]);
            }
        }

        console.log('arr1 = [' + arr1 + ']');
        console.log('arr2 = [' + arr2 + ']');
    </script>
</head>

<body>
    <!-- 数组去重 -->
    <!-- 有一个数组['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b'],要求去除数组中重复的元素 -->
</body>

</html>

在这里插入图片描述

3.8 数组转换为字符串

方法名说明返回值
toString()把数组转换成字符串,逗号分隔每一项返回一个字符串
join(‘分隔符’)方法用于把数组中的所有元素转换为一个字符串返回一个字符串
<!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>
        // 数组转换为字符串 

        // toString() 将数组转换为字符串
        var arr = [1, 2, 3];
        console.log(arr.toString()); // 1,2,3
        
        // join(分隔符) ,把数组中的所有元素转换为一个字符串
        var arr1 = ['green', 'blue', 'red'];
        console.log(arr1.join()); // green,blue,red
        console.log(arr1.join('-')); // green-blue-red
        console.log(arr1.join('&')); // green&blue&red
    </SCript>
</head>
<body>
    
</body>
</html>

在这里插入图片描述

3.9 数组连接

<!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 arr1 = [1, 2, 3];
        var arr2 = [4, 5, 6];
        var arr3 = arr1.concat(arr2);
        console.log('arr3 = [' + arr3 + ']');
    </script>
</head>

<body>

</body>

</html>

3.10 数组截取

<!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 arr1 = [1, 2, 3, 4, 5, 6];
        var arr2 = [];
        var arr2 = arr1.slice(2, 5);
        console.log('arr2 = [' + arr2 + ']');
    </script>
</head>

<body>

</body>

</html>

3.11 数组删除

<!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 arr1 = [1, 2, 3, 4, 5, 6];
        var arr2 = [];
        var arr2 = arr1.splice(2, 5);
        console.log('arr1 = [' + arr1 + ']');
        console.log('arr2 = [' + arr2 + ']');
    </script>
</head>

<body>

</body>

</html>

4. 字符串对象

4.1 基本包装类型

为了方便操作基本数据类型,JavaScript 还提供了三个特殊的引用类型:String、Number和 Boolean

基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法

<!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>
        // JavaScript 提供了三个特殊的引用类型:String、Number和 Boolean
        var str = new String('ich');
        console.log('str = ' + str);

        var a = new Number('123'); // a === 123 is false
        var b = Number('123'); // b === 123 is true

        console.log(a instanceof Number); // true
        console.log(b instanceof Number); // false

        let t = new Boolean(true);
        console.log(t);   //Boolean{true}

        var str = 'andy';
        console.log(str.length);
        // 对象 才有 属性和方法   复杂数据类型才有 属性和方法 
        // 简单数据类型为什么会有length 属性呢? 
        // 基本包装类型:  就是把简单数据类型 包装成为了 复杂数据类型 
        // (1) 把简单数据类型包装为复杂数据类型 
        var temp = new String('andy');
        // (2) 把临时变量的值 给 str
        str = temp;
        // (3) 销毁这个临时变量
        temp = null;
    </script>
</head>

<body>

</body>

</html>

4.2 字符串的不可变

<!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 = 'andy';
        console.log(str);   // andy
        str = 'red';
        console.log(str);   // red

        // 因为字符串的不可变所以不要大量的拼接字符串
        var str = '';
        for (var i = 1; i <= 1000000000; i++) {
            str += i;
        }
        console.log(str); // Uncaught RangeError: Invalid string length(字符串长度无效)
    </script>
</head>
<body>
    <!-- 
        字符串的不可变:
            指的是里面的值不可变,虽然看上去可以改变内容,
            但其实是地址变了,内存中新开辟了一个内存空间
     -->
</body>
</html>

在这里插入图片描述

4.3 根据字符返回位置

字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串

方法名说明
indexOf(‘要查找的字符’,开始的位置)返回指定内容在元字符串中的位置,如果找不到就返回-1,开始的位置是index索引号
lastlndexOf()从后往前找,只找第一个匹配的
<!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 = '如果,樱花掉落的速度是每秒五厘米,那么两颗心需要多久才能靠近?';
        console.log(str.indexOf('五')); // 13
        console.log(str.indexOf('五', 6)); // 13

        console.log(str.lastIndexOf('五')); // 13
        console.log(str.lastIndexOf('五', 30)); // 13
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

4.4 根据字符返回位置练习

查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数
核心算法:先查找第一个o出现的位置
然后 只要indexOf 返回的结果不是 -1 就继续往后查找
因为indexOf 只能查找到第一个,所以后面的查找,一定是当前索引加1,从而继续查找

<!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出现的位置以及次数
        // 核心算法:先查找第一个o出现的位置
        // 然后 只要indexOf 返回的结果不是 -1 就继续往后查找
        // 因为indexOf 只能查找到第一个,所以后面的查找,一定是当前索引加1,从而继续查找
        var str = 'abcoefoxyozzopp';
        var index = str.indexOf('o');
        var num = 0;
        var indexs = 0;
        while (index !== -1) {
            indexs = index;
            console.log('indexs = ' + indexs);
            num++;  
            index = str.indexOf('o', index + 1);
        }
        console.log('num = ' + num);


        // -------------- lastIndexOf --------------
        var str1 = 'abcoefoxyozzopp';
        var index1 = str1.lastIndexOf('o', str1.length);
        var num1 = 0;
        var indexs = 0;
        // console.log(index1);
        while (index1 !== -1) {
            indexs = index1;
            console.log('indexs = ' + indexs);
            num1++;
            index1 = str1.lastIndexOf('o', index1 - 1);
        }
        console.log('num1 = ' + num1);
    </script>
</head>

<body>
    <!-- 查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数 -->
</body>

</html>

在这里插入图片描述

4.5 根据位置返回字符

方法名说明使用
charAt(index)返回指定位置的字符(index字符串的索引号)str.charAt(0)
charCodeAt(index)获取指定位置处字符的ASCIl码(index索引号)str.charCodeAt(0)
str[index]获取指定位置处字符HTML5,IE8+支持和charAt()等效
<!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 = 'asdfghjkl';
        console.log(str.charAt(0));
        console.log(str.charAt(5));

        // 遍历所有的字符
        for (var i = 0; i < str.length; i++) {
            console.log(str.charAt(i));
        }

        // charCodeAt(index)  返回相应索引号的字符ASCII值
        // 目的: 判断用户按下了那个键 
        console.log(str.charCodeAt(0)); // 97
        console.log(str.charCodeAt(5)); // 104

        console.log(str[0]);
        console.log(str[5]);
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

4.6 根据位置返回字符练习

核心算法:利用 charAt() 遍历这个字符串
把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
遍历对象,得到最大值和该字符

<!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>
        // 核心算法:利用 charAt() 遍历这个字符串
        // 把每个字符都存储给对象, 如果对象没有该属性,就为1,如果存在了就 +1
        // 遍历对象,得到最大值和该字符
        var str = 'abcoefoxyozzopp';
        var o = {};
        for (var i = 0; i < str.length; i++) {
            var chars = str.charAt(i); // chars 是 字符串的每一个字符
            if (o[chars]) { // o[chars] 得到的是属性值
                o[chars]++;
            } else {
                o[chars] = 1;
            }
        }
        console.log(o);
        // 2. 遍历对象
        var max = 0;
        var ch = '';
        for (var k in o) {
            // k 得到是 属性名
            // o[k] 得到的是属性值
            if (o[k] > max) {
                max = o[k];
                ch = k;
            }
        }
        console.log(max);
        console.log('最多的字符是' + ch);
    </script>
</head>

<body>
    <!-- 判断一个字符串 'abcoefoxyozzopp' 中出现次数最多的字符,并统计其次数 -->
</body>

</html>

在这里插入图片描述

4.7 字符串操作方法

方法名说明
concat(str1,str2,str3…)concat()方法用于连接两个或多个字符串;拼接字符串,等效于+,+更常用
substr(start,length)从start位置开始(索引号), length 取的个数
slice(start, end)从start位置开始,截取到end位置,end取不到(start、end都是索引号)
substring(start, end)从start位置开始,截取到end位置,end取不到基本和slice相同但是不接受负
<!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 = 'asdf';
        var str2 = 'ghjkl';

        var str3 = str1.concat(str2);
        console.log('str3 = ' + str3); // str3 = asdfghjkl

        console.log('substr ' + str3.substr(3, 3)); // substr fgh

        console.log('slice ' + str3.slice(3, 6)); // slice fgh
        console.log('slice ' + str3.slice(3, -2)); // slice fghj

        console.log('substring ' + str3.substring(3, 6)); // substring fgh
        console.log('substring ' + str3.substring(3, -2)); //substring asd
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

4.8 replace() 方法

replace() 方法用于在字符串中用一些字符替换另一些字符

语法:replace(被替换的字符串, 要替换为的字符串);

<!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>replace()方法</title>
    <script>
        // replace() 方法用于在字符串中用一些字符替换另一些字符
        // replace(被替换的字符串, 要替换为的字符串);

        var str = 'aaaxxxbbb';
        console.log(str.replace('x', '!'));
        console.log(str.replace('xx', '!!'));
        console.log(str.replace('xxx', '!!!'));
    </script>
</head>

<body>

</body>

</html>

在这里插入图片描述

4.9 split() 方法

split()方法用于切分字符串,它可以将字符串切分为数组。在切分完毕之后,返回的是一个新数组

<!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>split()方法</title>
    <script>
        // split()方法用于切分字符串,它可以将字符串切分为数组
        // 在切分完毕之后,返回的是一个新数组
        var str = 'a,b,c,d';
        console.log(str.split(','));   // 返回的是一个数组 [a, b, c, d]
    </script>
</head>

<body>

</body>

</html>

4.10 转换大小写

<!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 = 'aaa';
        console.log(str.toUpperCase()); // 转换大写
        var str = 'AAA';
        console.log(str.toLocaleLowerCase()); // 转换小写
    </script>
</head>

<body>

</body>

</html>

GitHub代码
gitee代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/436664.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据通信基础 - 数据通信方式

文章目录 1 概述2 分类2.1 按通信方向分2.2 按同步方式分 3 扩展3.1 网工软考真题 1 概述 分类维度分类解释举例通信方向单工通信信息 只能在一个方向发送&#xff0c;发送方不能接收&#xff0c;接收方不能发送电视、广播半双工通信通信双方可以 交替发送和接收信息&#xff…

分布式锁+AOP实现缓存

分布式锁AOP实现缓存 1、分布式锁AOP实现思想2、不使用AOP的情况2.1 没有使用缓存时代码2.2 使用Redis实现分布式锁的代码2.3 使用Redisson实现分布式锁2.4 测试缓存命中2.5 存在问题 3、分布式锁AOP实现3.1 定义注解3.2 定义一个切面类加上注解3.3 使用注解完成缓存 1、分布式…

函数的缺省参数,函数重载与底层函数名修饰解释,引用的初步介绍

TIPS 使用C输入输出更方便&#xff0c;不需要像printf/scanf输入输出时那样&#xff0c;需要手动控制格式。C的输入输出可以自动识别变量类型。在日常练习中&#xff0c;建议直接using namespace std即可&#xff0c;这样就很方便。using namespace std展开&#xff0c;标准库…

ReetrantLock源码剖析_03公平锁、非公平锁

一直努力就会有offer&#xff0c;一直努力就会有offer&#xff0c;一直努力就会有offer&#xff01; 文章目录 ReetrantLock公平锁代码解析ReetrantLock公平锁执行流程ReetrantLock非公平锁代码解析ReetrantLock非公平锁执行流程公平锁与非公平锁的比较 ReetrantLock公平锁代码…

前端部署发布项目后,如何通知用户刷新页面、清除缓存

以下只是一些思路&#xff0c;有更好的实现方式可以留言一起交流学习 方式一&#xff1a;纯前端 在每次发布前端时&#xff0c;使用webpack构建命令生成一个json文件&#xff0c;json中写个随机生成的一个字符串&#xff08;比如时间戳&#xff09;&#xff0c;每次打包程序都…

【Python入门第五十天】Python丨NumPy 数组搜索

搜索数组 可以在数组中搜索&#xff08;检索&#xff09;某个值&#xff0c;然后返回获得匹配的索引。 要搜索数组&#xff0c;请使用 where() 方法。 实例 查找值为 4 的索引&#xff1a; import numpy as nparr np.array([1, 2, 3, 4, 5, 4, 4])x np.where(arr 4)pri…

node可以用nvm快速切换版本,golang如何快速切换版本?用gvm就行。

使用 gvm 可以带来以下好处&#xff1a; 快速切换 Golang 版本&#xff0c;方便进行版本测试和开发&#xff1b;可以在多个项目中同时使用不同版本的 Golang 包和工具&#xff0c;避免冲突&#xff1b;可以通过 gvm 管理不同版本的 Golang&#xff0c;方便安装、卸载和更新&am…

STL--vector

一、vector介绍 vector是表示大小可以更改的数组的序列容器 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是可以动态改变的&#xff0c;而…

移动端屏幕适配

文章目录 移动端屏幕适配移动端屏幕适配和响应式布局区别基本知识简单屏幕适配 移动端屏幕适配 移动端屏幕适配和响应式布局区别 移动端适配响应式布局终端移动端PC端和移动端常用单位宽高&#xff1a;rem 或 %字体&#xff1a;px宽&#xff1a;%高、字体&#xff1a;px宽高宽…

Docker网络模式与cgroups资源控制

目录 1.docker网络模式原理 2.端口映射 3.Docker网络模式&#xff08;41种&#xff09; 1.查看docker网络列表 2.网络模式详解 4.Docker cgroups资源控制 1.CPU资源控制 2.对内存使用的限制 3.对磁盘IO的配置控制&#xff08;blkio&#xff09;的限制 4.清除docker占用…

Vue3教程

文章目录 参考资料1 setup语法糖1.1 vue2中的写法1.2 setup语法糖在vue3中使用 2 ref reactive 事件2.1 ref2.2 reactive2.3 事件&#xff1a;在setup script中&#xff0c;直接定义事件&#xff0c;不需要像vue2那样在method中定义 3 computed & watch & watchEffect3…

详解DHCP和DNS实验汇总

文章目录 1.实验说明2.实验步骤2.1&#xff08;linux的CentOS 7-2&#xff09;命令配置2.2 &#xff08;linux的CentOS 7-3&#xff09;命令配置2.3 客户端(WIN10)命令配置2.4 客户端(CentOS 7-1)命令配置 1.实验说明 实验要求&#xff1a;要求在一台主机中同时配置DNS服务器和…

【SpringCloud】1、Nacos注册中心、配置中心搭建

1、Nacos 简介 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助…

PartiQL 对 SQL 的扩展,可以查询非结构化的数据

目录 开始 先决条件 下载 PartiQL CLI 运行 PartiQL CLI 窗户 macOS &#xff08;Mac&#xff09; 和 Unix 命令行教程 介绍 PartiQL 查询与 SQL 兼容 PartiQL 数据模型&#xff1a;许多底层数据存储格式的抽象 了解更多信息 查询嵌套数据 嵌套集合 取消嵌套嵌套…

Hbase数据库完全分布式搭建以及java中操作Hbase

文章目录 1.基础的环境准备2.完全分布式 Fully-distributed2.1 配置文件hase-env.sh2.2 hbase-site.xml2.3 配置regionservers2.4 配置备用的master2.5 HDFS客户端配置2.6 启动2.7 通过页面查看节点信息 3. java中客户端操作Hbase3.1 引入依赖3.2 初始化创建连接3.3 操作Hbase数…

Qt/QML编程学习之心得:D-BUS进程间通信(四)

Qt/QML应用编程最适合于一些触摸的嵌入式界面设计&#xff0c;那么GUI界面怎么与底层的设备通信&#xff0c;怎么与一个系统内其他模块通信的呢&#xff1f;这就不得不说一个很重要的设计模式&#xff1a;d-bus。 D-BUS是一个系统中消息总线&#xff0c;用于IPC/RPC。消息系统…

vi编辑器的使用介绍

vi编辑器的使用 vi的特点与运用场景vi的使用简易执行一个案例按键说明第一部分&#xff1a;命令模式的按键说明(光标移动、复制粘贴、查找替换)移动光标的方法查找与替换删除、复制与粘贴 第二部分&#xff1a;命令模式切换到输入模式的可以按键进入插入或替换的编辑模式 第三部…

A100 Jeston TX1/TX2使用教程-介绍

大家好&#xff0c;我是虎哥&#xff0c;经过一段时间的整理&#xff0c;终于完成了我自己算力盒子&#xff0c;A100系统的设计和研发&#xff0c;今天就来和大家聊聊这款针对TX1和TX2的入门级计算盒子的一些特性和功能。 一、EdgeBox_Umate_A100 算力盒子 A100 算力盒子是“玩…

系统集成项目管理工程师 笔记(第五章:项目立项管理)

文章目录 5.1 项目建议 2225.2 项目可行性分析 224项目可行性研究内容&#xff1a;5.2.2 项目可行性研究阶段 227 5.4 项目招投标 229《中华人民共和国招标投标法实施条例》5.4.1 项目招标 2295.4.2 项目投标 2305.4.3 开标与评标 2345.4.4 选定项目承建方 235 5.5 项目合同谈判…

实模式下内存访问

虽然有了寄存器&#xff0c;但是数据和指令还是需要存储到内存中。通常情况下需要把数据从内存中放到寄存器中才能使用&#xff0c;同样的指令需要放到寄存器中才能被CPU执行。 所有的内存访问都需要段寄存器左移四位加上其他寄存器的值才能得到真正地址值。这是由于以前运行实…