学习一个内置对象的使用,只要学会其常用成员的使用即可,我们可以通过查文档学习,可以通过MDN/W3C来查询。
Mozilla开发者网络(MDN)提供了有关开放网络技术(Open Web)的信息,包括HTML、CSS和万维网及HTML5应用的API。
MDN:https://developer.mozilla.org/zh-CN/
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
- //封装自己的数学对象
- 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 = arguments[i];
- }
- }
- return min;
- }
- }
- console.log(myMath.PI);//3.1415926
- console.log(myMath.max(1,5,8,3));//8
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));
案例:随机点名
- function getRandom(min, max) {
- return Math.floor(Math.random()*(max - min + 1)) + min;
- }
- var arr = ['赵飞帆','陈亚婷','爱你嘿嘿','你是宝宝'];
- console.log(arr[getRandom(0, arr.length-1)]);
案例:猜数字游戏
- 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
- alert('数字小了哦~继续猜吧');
- }else {
- alert('你猜对啦~~~~');
- break;
- }
- }
- if(num>10) {
- alert('10次机会用完啦~');
- }
日期对象
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);计算当前秒数
- 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 (中国标准时间)
数组对象
数组对象的创建
创建数组对象的两种方式:①字面量方式 ②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);
筛选数组案例
- //有一个包含工资的数组[1500,1200,2000,2100,1800],
- //要求把数组中工资超过2000的删除,剩余的放到新数组里
- var arr=[1500,1200,2000,2100,1800];
- var newArr=[];
- for(var i=0; i
length; i++){ - if(arr[i]<2000) {
- //newArr[newArr.length]=arr[i];
- newArr.push(arr[i]);
- }
- }
- console.log(newArr);//(3) [1500, 1200, 1800]
数组排序
方法名 说明 是否修改原数组 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就说明新数组里没有该元素。
- // 有一个数组['c','a','z','a','x','a','x','c','b'],要求去除数组中重复的元素.
- function unique(arr) {
- var newArr = [];
- for(var i=0; i
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']
数组转换为字符串
方法名 说明 返回值 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,从而继续查找。
- 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
根据位置返回字符(重点)
方法名 说明 使用 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
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('没有该属性');
- }
- var str = 'abcoefoxyozzopp';
- var o = {};
- for(var i=0; i
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
字符串操作方法(重点)
方法名 说明 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是取几个字符
其他方法
- 替换字符 replace('被替换的字符','替换为的字符') 它只会替换第一个字符。
- 字符转换为数组 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']
-
相关阅读:
序列化单例
基于JAVA西藏民族大学论文管理系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署
分享两个小技巧,让你的PPT看起来更高级
探索Go语言在机器学习领域的应用局限与前景
将图片的大小(分辨率)调整为指定的宽度和高度
Android 12系统源码_WindowInsets (一)WindowInsets相关类和功能介绍
搭建STM32开发环境
【测试沉思录】18.如何测试微信小程序?
kubernetes集群编排(12)
java智慧停车系统源码
-
原文地址:https://blog.csdn.net/weixin_50768118/article/details/127439684