JavaScript笔记

一、JavaScript常用对象(内置对象}

javascript中的对象分为三种:自定义对象、内置对象、浏览器对象。

参考文档 MDN 、W3C

1、math对象

Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。

绝对值–Math.abs(x)

几个数最大值–Math.max([x[, y[, …]]])

几个数最小值–Math.min([x[, y[, …]]])

返回一个数的 y 次幂–Math.pow(x, y)

返回四舍五入后的整数–Math.round(x)。针对负数时注意验证

一个数向下取整后的值–Math.floor(x)

一个数向上取整后的值–Math.ceil(x)

返回一个 0 到 1 之间的伪随机数(浮点数)–Math.random()

1-1 取一个0-100的随机数

var a= Math.round(Math.random()*100)
  alert(a)

1-2 两数之间的随机整数,包括两个数在内

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
}

使用:a=getRandomIntInclusive(1,10)一到十之间的随机整数

1-3 猜字游戏

猜数字游戏
1、随机生成一个1-10整数;
2、用户去猜;
3、根据用户输入的数字,提示用户是否正确,大、小
4、用户只有5次机会

 function getRandomIntInclusive(min, max) {
        min = Math.ceil(min);
        max = Math.floor(max);
        return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
    }
    //随机数
    var random = getRandomIntInclusive(1, 10)
    var i=5
    while (1) {
        var num = prompt('请输入1-10的整数,你只有10次机会')
        if (num > random) {
            i--
            alert('你猜大了,请重新输入,还有' + i +'次机会')
        } else if (num < random) {
            i--
            alert('你猜小了,请重新输入还有' + i +'次机会')
        } else {
            alert('你猜对了')
            break;
        }
    }

2、封装自己的math对象

封装自己的对象

var mymath={
    PI:3.141592653,
    max:function(){
        var max=arguments[0];
        for(var i;i<arguments.length;i++){
            if(arguments[i]>max){
                max=arguments[i]
            }
            return max;
        }
       
    }
}
console.log(mymath.PI)
console.log(mymath.max(1,7,2))

3、Date日期对象的使用

创建一个新Date对象的唯一方法是通过new 操作符,例如:let now = new Date();

3-1 获取系统当前事件

var date=new Date();

3-2 创建一个日期对象方法

 var today= new Date();
   var birth=new Date('2001-10-13 16:12:10');//通常使用这种
   var birth2=new Date(2001,10,13)//返回的实际月份大一月
    alert(today + birth + birth2)

3-3 格式化日期年月日(重)

  var today = new Date();
    console.log(today.getFullYear())
    console.log(today.getMonth() + 1)
    console.log(today.getDate())
    console.log(today.getHours())
    console.log(today.getMinutes())
    console.log(today.getSeconds())
    console.log(today.getDay())

    var arr = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
    var date = today.getFullYear() + '-' + (today.getMonth() + 1) + '-' + today.getDate() 
    + ' ' + today.getHours() + ':' + today.getMinutes() + ':' + today.getSeconds() + arr[today.getDay()]
    alert(date)

3-4获取时间戳(重)

当前时间距1970年1月1日午夜的毫秒数
方法一、alert(Date.parse(today))

alert(Date.parse("2001-10-13 16:30:20"))
获取的时当前时间距离1970年的时间

方法二、date.valueOf()获取

// Date:当前时间距1970年1月1日午夜的毫秒数
var date = new Date(2013, 7, 18, 23, 11, 59, 230);
console.log(date.valueOf()); // 1376838719230

方法三、最简单的获取方式
var today = +new Date();
alert(today)

3-5 倒计时案例

1、核心算法,输入的时间减去现在的时间就是倒计时剩余的时间,但是05分减去当前25分是负的,涉及复杂。
2、通常使用时间戳计算,用户输入的时间的时间戳减去现在的时间戳,得到的时间及倒计时。
3、把剩余时间转换为日、时、分、秒即可。
转换如下:
day=parseInt(总秒数/60/60/24)
hour=parseInt(总秒数/60/60%24)
min=parseInt(总秒数/60%60)
sec=parseInt(总秒数%60)

 var time = +new Date('2023-12-23 19:20:21')
    function countdown(time) {
        var today_time = +new Date();
        var cut_time = +new Date(time);
        var times = (cut_time - today_time) / 1000;
       var day = parseInt(times / 60 / 60 / 24)
       var hour = parseInt(times / 60 / 60 % 24)
       var min = parseInt(times / 60 % 60)
       var  sec = parseInt(times % 60)
       return day+'天'+hour+'时'+min+'分'+sec+'秒'
    }
    alert(countdown(time))

4 、数组对象

4-1创建数组的两种方式

4-1-1利用数组字面量

var array=[1,2,3];
console.log(array[0])

4-1-2利用new array()

var array=new array()

4-2检测是否为数组

4-2-1利用instanceof

var arr=[ ];
var obj={ };
console.log(arr instanceof Array)

4-2-2Array.isArray()

用于确定传递的值是否是一个 Array。
Array.isArray([1, 2, 3]);
// true
Array.isArray({foo: 123});
// false
Array.isArray(“foobar”);

4-3 添加元素

4-3-1添加删除push、unshift、indexOf、splice
var arr=new Array(1,2)
    //.push 添加数组到最后边
    console.log(arr.push(3,4))//出来的时长度
    console.log(arr)//这才是添加后的数组,结果是arr=[1,2,3,4]
    //.pop删除末尾的元素
    arr.pop();
    console.log(arr);//这才是删除后的数组,结果是arr=[1,2,3]

    //添加元素到头部
    arr.unshift(-1,0);
    console.log(arr);//结果是arr=[-1,0,1,2,3]

    //删除头部的元素
    arr.shift();//结果是arr=[0,1,2,3]
    console.log(arr);

    //找出某个元素在数组中的位置(索引)
    var fruit=['apple','banana']
    fruit.push('pink')
    var pos=fruit.indexOf('banana')//获取该元素的位置数组下标
    console.log(pos)

    //splice(pos,num)
    // 通过索引出来的位置删除某个元素
    var a=fruit.splice(1,2)
    console.log(a)//a数组是删除的元素集合
    console.log(fruit)//此时该数组已经通过索引删除
4-3-2去掉重复的数组元素

思路:创建一个新数组,遍历旧数组之中的元素在新数组中一次查询书否存在;

4-4、数组排序reverse()以及sort()

4-4-1 reverse()
var arr = new Array(1, 2)
    //.push 添加数组到最后边
    console.log(arr.push(3, 4))//出来的时长度
    console.log(arr)//这才是添加后的数组,结果是arr=[1,2,3,4]
    //.pop删除末尾的元素
    arr.reverse()//反转数组
    console.log(arr)

   
4-4-2 sort()

默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的

 arr1 = [5, 2, 9, 1]
    arr1.sort();//数组排序
    console.log(arr1)

由于它取决于具体实现,因此无法保证排序的时间和空间复杂性。所以会出现以问题

 arr1 = [52, 12, 9, 1]
    arr1.sort();//数组排序
    console.log(arr1)//1,12,52,9

通常以下方法修改

    arr1 = [52, 12, 9, 1]
    arr1.sort(function compareNumbers(a, b) {
        return a - b;
    });//数组排序
    console.log(arr1)//1,9,12,52

return b - a;//降序排列

5、RegExp对象

RegExp 对象表示正则表达式,它是对字符串执行模式匹配的强大工具。

计算机可以根据正则表达式,来检查一个字符串是否符合规则,是否含有某些字符,获取将字符串中符合规则的内容提取出来
使用typeof检查正则对象,会返回object。

5-1 创建对象

var 变量名 =new RegExp('正则表达式’,‘匹配模式’)

  • i:忽略大小写
  • g:全局匹配模式
  • ig:忽略大小写且全局匹配

正则表达式
在这里插入图片描述

5-1-1使用对象创建

语法格式:var 变量名 =new RegExp('正则表达式’,‘匹配模式’)

 var reg =new RegExp('abc','i');
    var str='Abcde'
    var result=reg.test(str)
    alert(result)
    //检查是否含有abc,结果为true
5-1-2使用字面量创建

语法格式:var 变量名 = /正则表达式/匹配模式;
匹配模式:

  • i:忽略大小写
  • g:全局匹配模式
  • m:执行多行匹配
var reg =new RegExp(/e/,'i');
    var str='Abcde'
    var result=reg.test(str)
    alert(result)
    //检查是否含有e,结果为true

5-2 判断是否含有字符

创建一个正则表达式,判断是都含有a或则b
使用 | 或

var reg =new RegExp(/a|b/,'i');
    var str='abcde'
    var result=reg.test(str)
    alert(result)
    //结果为true

【】通常也表示或的意思;
如上可改写成

var reg =new RegExp(/[ab]/,'i');
    var str='abcde'
    var result=reg.test(str)
    alert(result)
    //结果为true

常见正则表达式见上方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来一定会来的

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值