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
        

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙网络编程系列32-基于拦截器的性能监控示例

1. 拦截器简介 在Web开发中拦截器是一种非常有用的模式&#xff0c;它允许开发者在请求发送到服务器之前或响应返回给客户端之前执行一些预处理或后处理操作。这种机制特别适用于需要对所有网络请求或响应进行统一处理的情况&#xff0c;比如添加全局错误处理、请求头的修改、…

【深度学习】【OpenVINO】【C++】模型转化、环境搭建以及模型部署的详细教程

【深度学习】【OpenVINO】【C】模型转化、环境搭建以及模型部署的详细教程 提示:博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 【深度学习】【OpenVINO】【C】模型转化、环境搭建以及模型部署的详细教程前言模型转换--pytorch转onnxWindows平台搭建…

我们可以用微服务创建状态机吗?

大家好&#xff0c;我是锋哥。今天分享关于【我们可以用微服务创建状态机吗&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 我们可以用微服务创建状态机吗&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 是的&#xff0c;微服务架构可…

为什么选择 Spring data hadoop

&#x1f449; 请点赞支持这款 全新设计的脚手架 &#xff0c;让 Java 再次伟大&#xff01; spring-data-hadoop hbase 常见的操作方式有以下三种&#xff1a; Native Api 原生 api 操作繁琐&#xff0c;就像用 JDBC 操作关系型数据库一样&#xff0c;类似 flush、submit、…

Windows系统启动MongoDB报错无法连接服务器

文章目录 发现问题解决办法 发现问题 1&#xff09;、先是发现执行 mongo 命令&#xff0c;启动报错&#xff1a; error: MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017&#xff1b; 2&#xff09;、再检查 MongoDB 进程 tasklist | findstr mongo 发现没有进程&a…

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…

时间序列预测(九)——门控循环单元网络(GRU)

目录 一、GRU结构 二、GRU核心思想 1、更新门&#xff08;Update Gate&#xff09;&#xff1a;决定了当前时刻隐藏状态中旧状态和新候选状态的混合比例。 2、重置门&#xff08;Reset Gate&#xff09;&#xff1a;用于控制前一时刻隐藏状态对当前候选隐藏状态的影响程度。…

STM32实现毫秒级时间同步

提起“时间同步”这个概念&#xff0c;大家可能很陌生。一时间搞不清楚是什么意思。 我理解“时间同步”可以解决多个传感器采集数据不同时的问题&#xff0c;让多个传感器同时采集数据。 打个比方。两个人走路&#xff0c;都是100毫秒走一步&#xff08;频率相同是前提&…

2024数学分析【南昌大学】

计算极限 lim ⁡ n → ∞ 2024 n ( 1 − cos ⁡ 1 n 2 ) n 3 1 + n 2 − n \mathop {\lim }\limits_{n \to \infty } \frac{{\sqrt[n]{{2024}}\left( {1 - \cos \frac{1}{{{n^2}}}} \right){n^3}}}{{\sqrt {1 + {n^2}} - n}} n→∞lim​1+n2 ​−nn2024 ​(1−cosn21​)n3​ …

XJ02、消费金融|消费金融业务模式中的主要主体

根据所持有牌照类型的不同,消费金融服务供给方主要分为商业银行、汽车金融公司、消费金融公司和小贷公司,不同类型机构定位不同、提供消费金融服务与产品类型也各不相同。此外,互联网金融平台也成为中国消费金融业务最重要的参与方之一,虽其并非持牌金融机构,但借助其流量…

React 分装webSocket

背景 AI 实时对话 需要流式数据 React Hooks 写法。新建WebSocket.tsx 放在根目录components import { useCallback, useRef, useState } from react;type MessageHandler (message: MessageEvent) > void; type ErrorHandler (event: Event) > void;export functi…

深度学习(一)基础:神经网络、训练过程与激活函数(1/10)

深度学习基础&#xff1a;神经网络、训练过程与激活函数 引言&#xff1a; 深度学习作为机器学习的一个子领域&#xff0c;近年来在人工智能的发展中扮演了举足轻重的角色。它通过模仿人脑的神经网络结构&#xff0c;使得计算机能够从数据中学习复杂的模式和特征&#xff0c;…

List、Set、数据结构、Collections

一、数据结构 1.1 常用的数据结构 栈 栈&#xff1a;stack,又称堆栈&#xff0c;它是运算受限的线性表&#xff0c;其限制是仅允许在标的一端进行插入和删除操作&#xff0c;不允许在其他任何位置进行添加、查找、删除等操作。 简单的说&#xff1a;采用该结构的集合&#…

【网络协议栈】Tcp协议(下)的可靠性和高效性(超时重传、快速重传、拥塞控制、流量控制)

绪论: 承接上文&#xff0c;上文写到Tcp协议的结构以及对tcp协议的性能优化的滑动窗口&#xff0c;本章我们将继续了解Tcp协议的可靠性和高效性的具体展示。后面我将继续完善网络协议栈的网络层协议敬请期待&#xff01; 话不多说安全带系好&#xff0c;发车啦&#xff08;建议…

【AI绘画】Midjourney进阶:对角线构图详解

博客主页&#xff1a; [小ᶻZ࿆] 本文专栏: AI绘画 | Midjourney 文章目录 &#x1f4af;前言&#x1f4af;什么是构图为什么Midjourney要使用构图 &#x1f4af;对角线构图特点应用场景提示词书写技巧测试 &#x1f4af;小结 &#x1f4af;前言 【AI绘画】Midjourney进阶&a…

Linux常用命令1

切换目录 cd [rootlocalhost menge]# cd /[rootlocalhost /]# cd: cd [-L|[-P [-e]] [-]] [目录] 查看当前的目录 pwd 浏览目录内容 ls ls浏览后颜色表示 白色&#xff1a;普通文件 蓝色&#xff1a;目录 红色&#xff1a;压缩包文件 黄色&#xff1a;设备文件 绿…

以 6502 为例讲讲怎么阅读 CPU 电路图

开篇 你是否曾对 CPU 的工作原理充满好奇&#xff0c;以及简单的晶体管又是如何组成逻辑门&#xff0c;进而构建出复杂的逻辑电路实现&#xff1f;本文将以知名的 6502 CPU 的电路图为例&#xff0c;介绍如何阅读 CPU 电路图&#xff0c;并向你演示如何从晶体管电路还原出逻辑…

.NET Core WebApi第2讲:前后端分离,Restful

动态页面&#xff1a;数据流动 / Web服务器 / Ajax / 前后端分离 / restful风格源栈课堂一起帮https://17bang.ren/Code/261 一、Ajax&#xff1a;页面可以局部刷新 1、PPT演示:使用Ajax也无法减小带宽耗用 请求第一个页面&#xff0c;用AJAX从服务器端加载了一个页头。 请求第…

Maven进阶——坐标、依赖、仓库

目录 1.pomxml文件 2. 坐标 2.1 坐标的概念 2.2 坐标的意义 2.3 坐标的含义 2.4 自己项目的坐标 2.5 第三方项目坐标 3. 依赖 3.1 依赖的意义 3.2 依赖的使用 3.3 第三方依赖的查找方法 3.4 依赖范围 3.5 依赖传递和可选依赖 3.5.1 依赖传递 3.5.2 依赖范围对传…

ollama 在 Linux 环境的安装

ollama 在 Linux 环境的安装 介绍 他的存在在我看来跟 docker 的很是相似&#xff0c;他把市面上已经存在的大语言模型集合在一个仓库中&#xff0c;然后通过 ollama 的方式来管理这些大语言模型 下载 # 可以直接通过 http 的方式吧对应的 shell 脚本下载下来&#xff0c;然…