JavaScript基础---JavaScript内置对象---10.20

内置对象

  • JavaScript中的对象分为3种:自定义对像、内置对象、浏览器对象。
  • 前面两种对象是JS基础内容,属于ECMAScript,浏览器对象属于我们JS独有的,我们JS API再讲解。
  • 内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或最基本而必要的功能(属性和方法)。
  • 内置对象最大的优点就是帮助我们快速开发。
  • JavaScript提供了多个内置对象:Math、Date、Array、string等。

查文档

MDN

学习一个内置对象的使用,只要学会其常用成员的使用即可,我们可以通过查文档学习,可以通过MDN/W3C来查询。
Mozilla开发者网络(MDN)提供了有关开放网络技术(Open Web)的信息,包括HTML、CSS和万维网及HTML5应用的API。
MDN:https://developer.mozilla.org/zh-CN/

Math对象

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

举例:
console.log(Math.PI);//圆周率
console.log(Math.max(1,99,22));//99
console.1og(Math.max(1,99,'pink老师'));//NaN
console.log(Math.max());//-Infinity
//封装自己的数学对象
<script>
    var myMath = {
        PI:3.1415926,
        max:function() {
            var max = arguments[0];
            for(var i=1;i<arguments.length;i++) {
                if(arguments[i]>max) {
                    max = arguments[i];
                }
            }
            return max;
        },
        min: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);//3.1415926
    console.log(myMath.max(1,5,8,3));//8
</script>

Math概述

Math对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用Math中的成员。

Math.PI    //圆周率
Math.floor()    //向下取整,往最小取值
Math.ceil()     //向上取整,往最大取值
Math.round()    //就近取整   四舍五入版   注意Math.round(-3.5)结果是-3
Math.abs()    //绝对值
Math.max()/Math.min()    //求最大和最小值

随机数方法 random()

Math.random()函数返回一个随机的浮点数,伪随机数在范围[0,1) 。 方法里面不跟参数。

console.log(Math.random());

如果想知道得到两数之间的一个随机整数,也可以查阅MDN手册。

function getRandom(min, max) {
    return Math.floor(Math.random()*(max - min + 1)) + min;
}
console.log(getRandom(1, 10));

案例:随机点名

<script>
    function getRandom(min, max) {
        return Math.floor(Math.random()*(max - min + 1)) + min;
    }
    var arr = ['赵飞帆','陈亚婷','爱你嘿嘿','你是宝宝'];
    console.log(arr[getRandom(0, arr.length-1)]);
</script>

案例:猜数字游戏

<script>
    function getRandom(min, max) {
        return Math.floor(Math.random()*(max - min + 1)) + min;
    }
    var random = getRandom(1,50);
    for(var num=1; num<=10; num++) {
        num = prompt('请输入你猜的数字(1-50)');
        if(num>random) {
            alert('数字大了哦~继续猜吧');
        }else if(num<random) {
            alert('数字小了哦~继续猜吧');
        }else {
            alert('你猜对啦~~~~');
            break;
        }
    }
    if(num>10) {
        alert('10次机会用完啦~');
    }
</script>

日期对象

Date概述

  • 创建一个新Date对象的唯一方法是通过new操作符。
  • Date对象和Math对象不一样,他是一个构造函数,所以我们需要实例化后才能使用。
  • Date实例用来处理日期和时间
var date = new Date();//如果没有参数,那么返回当前系统的日期和时间
var date1 = new Date(2019, 10, 02);//数字型参数
var date2 = new Date('2019-10-2 8:8:8');//字符串型参数
console.log(date);
console.log(date1);//返回的是11月而不是10月
console.log(date2);

日期格式化

获取日期指定的部分,我们要手动的得到这种格式。

//格式化日期:年、月、日、星期
var date = new Date();
console.log(date.getFullYear());//返回当前日期的年2022
console.log(date.getMonth()+1);//月份  返回的月份小1个月  记得月份+1
console.log(date.getDate());//返回几号
console.log(date.getDay());//周一返回1  周六返回6  但是周日返回0
//我们写一个2022年10月25日星期二
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]);
//格式化日期:时、分、秒
var date = new Date();
console.log(date.getHours());
console.log(date.getMinutes());
console.log(date.getSeconds()); 
//要求封装一个函数返回当前的时分秒格式  08:08:08
function getTime(){
        var time = new Date();
        var h = time.getHours();
        h=h<10?'0'+h:h;
        var m = time.getMinutes();
        m=m<10?'0'+m:m;
        var s = time.getSeconds();
        s=s<10?'0'+s:s;
        return h +':'+ m + ':' + s;
        }
console.log(getTime());

获取日期的总的毫秒数(时间戳)

//获得Date总的毫秒数(时间戳),不是当前时间的毫秒数, 而是距离1970年1月1号过了多少毫秒数
//1.通过valueof()  getTime()
var date = new Date();
console.log(date.valueOf());//就是我们现在时间距离1970.1.1总的毫秒数
console.log(date.getTime());
//2.简单的写法(最常用的写法)
var date1 = +new Date();//+new Date()   返回的就是总的毫秒数
console.log(date1);
//3.H5新增的  获得总的毫秒数
console.log(Date.now());

倒计时案例

案例分析:
①核心算法:输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒相减,比如05分减去25分,结果会是负数的。
②用时间戳来做。用户输入时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余时间的毫秒数。
③把剩余时间总的毫秒数转换为天、时、分、秒(时间戳转换为时分秒)。

转换公式:

d=parselnt(总秒数/60/60/24);计算天数
h=parselnt(总秒数/60/60%24);计算小时
m=parselnt(总秒数/60%60);计算分数
s=parselnt(总秒数%60);计算当前秒数

<script>
    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('2022-10-25 17:00:00'));//00天00时45分02秒
    var date = new Date();
    console.log(date);//Tue Oct 25 2022 16:14:57 GMT+0800 (中国标准时间)
</script>

数组对象

数组对象的创建

创建数组对象的两种方式:①字面量方式  ②new Array()

//1.利用数组字面量
var arr = [1, 2, 3];
console.log(arr[0]);//1
//2.利用new Array() 
//var arr1=new Array();创建了一个空的数组 
//var arr1=new Array(2);//这个2表示数组的长度为2  里面有2个空的数组元素
var arr1=new Array(2,3); //等价于[2,3]这样写表示里面有2个数组元素 是2和3
console.log(arr1);

检测是否为数组

1.instanceof 运算符可以检测是否为数组。

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

2.Array.isArray(参数);

当检测Array实例时,Array.isArray优于instanceof,因为Array.isArray能检测iframes。

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

添加删除数组元素的方法

方法名说明返回值
push(参数1...)末尾添加一个或多个元素,注意修改原数组返回新的长度
pop()删除数组最后一个元素,数组长度减1无参数、修改原数组返回删除的元素的值
unshift(参数1...)向数组的开头添加一个或更多元素,注意修改原数组返回新的长度
shift()删除数组的第一个元素,数组长度减1无参数、修改原数组返回第一个元素的值
//1.push是可以给数组追加新的元素
var arr = [1,2,3];
// arr.push(4,'ccc');
console.log(arr);//(5) [1, 2, 3, 4, 'ccc']
console.log(arr.push(4,'ccc'));
//2.unshift在我们数组的开头 添加一个或者多个数组元素
arr.unshift('yyy');
console.log(arr);
//3.pop()可以删除数组的最后一个元素  pop()没有参数
console.log(arr.pop());//ccc
console.log(arr);
//4.shift()可以删除数组的第一个元素  shift()没有参数
console.log(arr.shift());//yyy
console.log(arr);

筛选数组案例

<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);//(3) [1500, 1200, 1800]
</script>

数组排序

方法名说明是否修改原数组
reverse()颠倒数组中元素的顺序,无参数会改变原来的数组,返回新数组
sort()对数组的元素进行排序会改变原来的数组,返回新数组
//1.翻转数组
var arr = ['pink','red','blue'];
arr.reverse();
console.log(arr);//(3) ['blue', 'red', 'pink']
//2.数组排序(冒泡排序)
var arr1=[3,14,11,77,7,1];
arr1.sort(function(a, b) {
    return a-b;//升序的顺序排列
    // return b-a;//降序的顺序排列
    });
console.log(arr1);//(6) [1, 3, 7, 11, 14, 77]

数组索引方法

方法名说明返回值
indexOf()数组中查找给定元素的第一个索引如果存在返回索引号。如果不存在,则返回-1。
lastIndexOf()在数组中的最后一个素引如果存在返回索引号。如果不存在,则返回-1。
//indexOf()只返回第一个满足条件的索引号.如果在该数组里面找不到元素,则返回-1
var arr = ['red','green','blue','pink','blue'];//2
var arr = ['red','green','pink'];//-1
console.log(arr.indexOf('blue'));
//lastIndexOf()从后往前开始查找
var arr = ['red','green','blue','pink','blue'];
console.log(arr.lastIndexOf('blue'));//4

数组去重(重点案例)

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

①目标:把旧数组里不重复的元素选出来放到新数组中,重复的元素保留一个,放到新数组中。
②核心算法:我们遍历旧数组,然后拿着旧数组元素去查询新数组,如果该元素在新数组里没有出现过,我们就添加,否则不添加。
③我们怎么知道该元素有没有存在?利用 新数组.indexOf((数组元素)。如果返回-1就说明新数组里没有该元素。

<script>
    // 有一个数组['c','a','z','a','x','a','x','c','b'],要求去除数组中重复的元素.
    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;
    }
    var demo = unique(['c','a','z','a','x','a','x','c','b']);
    console.log(demo);//(5) ['c', 'a', 'z', 'x', 'b']
</script>

数组转换为字符串

方法名说明返回值
toString()把数组转换成字符串,逗号分隔每一项返回一个字符串
join('分隔符')方法用于把数组中的所有元素转换为一个字符串返回一个字符串
//1.tostring()将我们的数组转换为字符串
var arr = [1,2,3];
console.log(arr.toString());//1,2,3
//2.join(分隔符)
var arr1 = ['green','blue','pink'];
console.log(arr1.join());//green,blue,pink
console.log(arr1.join('-'));//green-blue-pink
console.log(arr1.join('&'));//green&blue&pink

字符串对象

字符的不可变

指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。因为我们字符串的不可变,所以不要大量的拼接字符串。

根据字符返回位置

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

方法名说明
indexOf('要查找的字符',开始的位置)返回指定内容在原字符串中的位置,如果找不到就返回-1,开始的位置是index索引号
lastIndexOf()从后往前找,只找第一个匹配的
//字符串对象根据字符返回位置  str.indexof('要查找的字符',[起始的位置])
var str='改革春风吹满地,春天来了';
console.log(str.indexOf('春'));//2
console.log(str.indexOf('春',3));//8   从索引号是3的位置开始往后查找

返回字符位置案例
查找字符串'abcoefoxyozzopp'中所有o出现的位置以及次数

  • 核心算法:先查找第一个o出现的位置。
  • 然后只要indexOf返回的结果不是-1,就继续往后查找。
  • 因为indexOf只能查找到第一个,所以后面的查找,利用第二个参数,当前索引加1,从而继续查找。
<script>
    var str = 'abcoefoxyozzopp';
    var index = str.indexOf('o');
    var num = 0;
    // console.log(index);//3
    while(index !== -1) {
        console.log(index);
        num++;
        index = str.indexOf('o',index+1);
    }
    console.log('一共'+num+'个o');//一共4个o
</script>

根据位置返回字符(重点)

方法名说明使用
charAt(index)返回指定位置的字符(index字符串的索引号)str.charAt(0)
charCodeAt(index)获取指定位置处字符的ASCII码(index索引号)str.charCodeAt(0)
str[index]获取指定位置处字符HTML5,IE8+支持  和charAt()等效
//1.charAt(index)根据位置返回字符
var str = 'andy';
console.log(str.charAt(3));
//遍历所有的字符
for(var i=0; i<str.length; i++) {
    console.log(str.charAt(i));
}
//2.charCodeAt(index)返回相应索引号的字符ASCII值
//目的:判断用户按下了哪个键
console.log(str.charCodeAt(0));//97
//3.str[index]     H5新增的
console.log(str[0]);//a

返回字符位置案例
判断一个字符串'abcoefoxyozzopp'中出现次数最多的字符,并统计其次数。

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

有一个对象来判断是否有该属性   对象['属性名']

var o = {
     age:18
}
if(o['sex']) {
     console.log('里面有该属性');
}else {
     console.log('没有该属性');
}
<script>
    var str = 'abcoefoxyozzopp';
    var o = {};
    for(var i=0; i<str.length; i++) {
        var chars = str.charAt(i);
        if(o[chars]) {
            o[chars]++;
        }else {
            o[chars]=1;
        }
    }
    console.log(o);//{a: 1, b: 1, c: 1, o: 4, e: 1, …}
    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);//4
    console.log('最多的字符是:'+ch);//最多的字符是:o
</script>

字符串操作方法(重点)

方法名说明
concat(str1,str2,str3...)concat()方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用
substr(start,length)从start位置开始(索引号),length取的个数    重点记住这个
slice(start,end)从start位置开始,截取到end位置,end取不到(他们俩都是索引号)
substring(start,end)

从start位置开始,截取到end位置,end取不到 

基本和slice相同  但是不接受负值

//1.concat('字符串1',字符串2'..)
var str ='andy';
console.log(str.concat('red'));//andyred
//2.substr('截取的起始位置','截取几个字符');
var str1='改革春风吹满地';
console.log(str1.substr(2,2));// 春风  第一个2是素引号  第二个2是取几个字符

其他方法

  1. 替换字符 replace('被替换的字符','替换为的字符')   它只会替换第一个字符。
  2. 字符转换为数组 split('分隔符')   前面学过join把数组转换为字符串。
//1.替换字符  replace('被替换的字符','替换为的字符') 它只会替换第一个字符
var str ='andyandy';
console.log(str.replace('a','b'));//bndyandy
//有一个字符串'abcoefoxyozzopp'要求把里面所有的o替换为*
var str1 = 'abcoefoxyozzopp';
while (str1.indexOf('o') !== -1) {
    str1 = str1.replace('o','*');
}
console.log(str1);//abc*ef*xy*zz*pp

//2.字符转换为数组 sp1it('分隔符')   前面学过join把数组转换为字符串
var str2 = 'red,pink,blue';
console.log(str2.split(','));//(3) ['red', 'pink', 'blue']
var str3 = 'red&pink&blue';
console.log(str3.split('&'));//(3) ['red', 'pink', 'blue']
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值