Math对象最大值
<script>
//Math 不是构造函数 不需要new调用 直接使用就行
console.log(Math.PI);//一个属性:圆周率
console.log(Math.max(1,5,99,2,55,3));//一个方法:求最大值
console.log(Math.min(1,2,3,5,4)); //最小值
console.log(Math.max(1,99,'pink老师'));//非数字返回NaN
console.log(Math.max());//-Infinity负无穷
</script>
封装一个自己的数学函数
<script> var myMath = { PI : 3.1415926, max : function () { var max = arguments[0]; for (var i = 0; i < arguments.length; i++) { if (max < arguments[i]) { max = arguments[i]; } } return max; }, min : function () { var min = arguments[0]; for (var i = 1; i < arguments.length; i++) { if (min > arguments[i]) { min = arguments[i]; } } return min; } } console.log(myMath.PI); console.log(myMath.max(1,5,2,10,4)); console.log(myMath.min(1,5,2,10,4)); </script>
<script> //绝对值 console.log(Math.abs(1));//1 console.log(Math.abs(-1));//1 console.log(Math.abs('-1'));//1 隐式转换 会把字符串型转换为数字型 console.log(Math.abs('pink'));//not a number NaN //三个取整的方法 //(1) Math.floor(); 向下取整 往小取 console.log(Math.floor(1.1));//1 console.log(Math.floor(1.9));//1 //(2) Math.ceil(); 向上取整 往大取 console.log(Math.ceil(1.1));//2 console.log(Math.ceil(1.9));//2 //(3) Math.round() 四舍五入 *** 负数只会往大取 console.log(Math.round(1.1));//1 console.log(Math.round(1.1));//1 console.log(Math.round(-1.1));//-1 console.log(Math.round(-1.5));//-1 </script>
随机数方法random()
<script> //Math对象随机数方法 random() 返回一个随机的小数[0,1)之间 //这个方法不跟参数 //代码验证 console.log(Math.random()); //想得到两个数之间的随机整数 并且包含这两个整数 //Math.floor(Math.random() * (max - min + 1)) + min; function getRandom(min,max) { return Math.floor(Math.random() * (max - min + 1)) + min; } console.log(getRandom(1,10)); //随机点名 var arr = ['张三','张三疯','吴亦凡','刘德华','潘长江']; console.log(arr[getRandom(0,arr.length-1)]); </script>
猜数字案例游戏
<script> //1 随机生成1-10的整数 //2 猜到正确位置 否则一直循环 //while循环好用 // if else if大于 小于 等于 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>
日期
<script> //Date(); 日期对象 是构造函数 需要new调用 var date = new Date(); //如果没有参数返回当前系统的当前时间 console.log(date); //参数常用的写法 数字型 2019,10,01 或 字符串型 '2021-10-1 8:8:8' var date1 = new Date(2019,10,1); console.log(date1);//返回的是十一月 不是十月 Fri Nov 01 2019 00:00:00 GMT+0800 (中国标准时间) //字符串型 var date2 = new Date('2021-10-1 8:8:8'); console.log(date2);//这个没错 Fri Oct 01 2021 08:08:08 GMT+0800 (中国标准时间) </script>
日期的格式化(年月日)
<script> var date = new Date(); console.log(date.getFullYear());//返回当前日期的年份 console.log(date.getMonth()+1);//返回的月份小一个月 0-11 加一即可 console.log(date.getDate());//返回的是几号 console.log(date.getDay());//返回周几 周一为1 周六为6 周日为0 ///我们写一个 2021年 9月20日 星期一 var year = date.getFullYear(); var month = date.getMonth()+1; var dates = date.getDate(); var day = date.getDay(); var arr = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; console.log('今天是'+year+'年'+month+'月'+dates+'日'+arr[day]); </script>
日期的格式化(时分秒)
<script> 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()); </script>
获取日期的总毫秒数(倒计时)
Date对象基于1970.1.1起的毫秒数
<script> //获取Date总的毫秒数(时间戳) 不是当前时间的毫秒数 而是距离1970年一月一日过了多少毫秒 //1 通过valueOf() 或者getTime() var date = new Date(); console.log(date.valueOf());//是距离1970年一月一日过了多少毫秒 console.log(date.getTime());//是距离1970年一月一日过了多少毫秒 ///简单最常用的写法的写法 var date1 = +new Date(); 括号里写时间是到那个时间的总毫秒数,不写是截至当前时间,是距离1970年一月一日过了多少毫秒 console.log(date1); //最简单的写法 H5新增的 不考虑兼容性可以用 console.log(Date.now()); </script>
倒计时案例
<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;//剩余时间的总秒数 var d = parseInt(times/60/60/24); d = d > 10? d : "0" + d; var h = parseInt(times/60/60%24); h = h > 10? h : "0" + h; var m = parseInt(times/60%60); m = m > 10? m : "0" + m; var s = parseInt(times%60); s = s> 10? s : "0" + s; return d + '天' + h +'时' + m + '分' + s + '秒'; } console.log('2022专升本倒计时'); console.log(countDown('2022-6-7 08:00')); </script>
创建数组的两种方式
<script> //创建数组的两种方式 //1 字面量 var arr = [1,2,3,5]; console.log(arr[0]); //2 new Array(); // var arr1 = new Array(); 创建了一盒空数组 // var arr1 = new Array(2);这个2表示数组的长度为2 里边有两个空数组元素 var arr1 = new Array(2,3);//表示里边 有两个数组 2 和 3 console.log(arr1); </script>
判断是否为数组
<script> //翻转数组案例 function reverse (arr) { if (arr instanceof Array) { var temp = []; for (var i = arr.length-1; i >= 0; i--) { temp[temp.length] = arr[i]; } return temp; }else { return '这个参数要求为数组'; } } console.log(reverse([1,2,3]));//3 2 1 console.log(reverse(1,2,3));//这个参数要求为数组 //检测是否为数组的方法 //(1) instanceof 运算符 检测是否为数组 var arr = []; var obj = {}; console.log(arr instanceof Array);//true 是返回true 不是返回flase console.log(obj instanceof Array);//flase 这是一个对象 不是数组 //( 2 ) Array.isArray(参数); console.log(Array.isArray(arr));//true console.log(Array.isArray(obj));//flase </script>
添加或者删除数组元素
<script> //1 push() 在数组的末尾 添加一个或者多个数组元素 push推 var arr = [1,2,3,4]; // arr.push(5,6,'pink'); console.log(arr.push(5,6,'pink')); console.log(arr); //(1) push 可以给数组追加新的元素 //(2) push() 参数直接写 数组元素就可以了 //(3) push完毕之后 返回的结果是新数组的长度 //(4) 原数组也会发生变化 //2 unshift 在数组的开头 添加一个或者多个数组元素 // arr.unshift('red'); console.log(arr.unshift('red')); console.log(arr); //(1) unshift 可以给数组最前边追加新的元素 //(2) unshift() 参数直接写 数组元素就可以了 //(3) unshift完毕之后 返回的结果是新数组的长度 //(4) 原数组也会发生变化 //3 pop() 可以删除数组的最后一个元素 // arr.pop(); console.log(arr.pop());//返回值为删除的元素 console.log(arr); //(1) pop 可以删除数组的最后一个元素(只能删除一个) //(2) pop() 不跟参数 //(3) pop完毕之后 返回的结果是删除的元素 //(4) 原数组也会发生变化 //4 shift() 可以删除数组的第一个元素 // arr.shift(); console.log(arr.shift());//返回值为删除的元素 console.log(arr); //(1) shift 可以删除数组的第一个元素(只能删除一个) //(2) shift() 不跟参数 //(3) shift完毕之后 返回的结果是删除的元素 //(4) 原数组也会发生变化 </script>
数组排序
<script> //数组排序 //1 翻转数组(方法) var arr = ['pink','blue',555]; arr.reverse(); console.log(arr); //2 数组排序(冒泡排序)方法 var arr1 = [3,4,77,1]; arr1.sort(function (a,b){ // return a - b;//升序排列 return b - a;//降序排列 }); console.log(arr1); </script>
获取数组的索引的方法
<script> //返回数组元素索引号的方法 indexOf(数组元素) var arr = [1,2,3,4,5,6,2]; console.log(arr.indexOf(1));//0 返回1元素在数组中的索引号 console.log(arr.indexOf(2));//2 如果有两个相同的元素 只返回第一个索引号 console.log(arr.indexOf(7));//-1 如果找不到这个元素返回-1 //lastindexOf(数组元素) 倒着数 但是索引号不变 记住前者indexOf就行 console.log(arr.lastIndexOf(6));//5 </script>
数组转换为字符串
<script> //数组转化为字符串 //1 toString() 是一个方法 将数组转换为字符串 var arr = [1,2,3,4]; console.log(arr.toString()); //2 join(分隔符) var arr1 = ['blue','pink','red']; console.log(arr.join());//不写分隔符默认逗号 console.log(arr.join("-"));// console.log(arr.join("&")); </script>
返回字符串的索引号
<script> //字符串对象 根据字符返回位置 str.indexOf('查找的字符',[起始的位置]); var str = '改革春风吹满地,春天来了'; console.log(str.indexOf('春'));//有两个春 只返回第一个 console.log(str.indexOf('春',3));//从索引号3开始查找跨过第一个春 8 </script>
数组去重
<script> //去重['c','a','z','a','x','a','x','c','b']; // 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[newarr.length] = arr[i]; // } // } // console.log(newarr); //把这个程序封装为一个函数 function unique(arr) { var newarr = []; for (var i = 0; i < arr.length; i++) { if (newarr.indexOf(arr[i]) == -1) { newarr[newarr.length] = arr[i]; } } return newarr; } var result = unique(['c','a','z','a','x','a','x','c','b']); console.log(result); </script>
返回字符案例
<script> // 查找字符'abiodsodfbo'中o出现的位置以及次数 // function uniqur(str) { // var sum = 0; // for (var i = 0; i < str.length; i++) { // if (str[i] == 'o') { // sum +=1; // console.log(str.indexOf('o',[i])); // } // } // return sum; // } // console.log(uniqur('abiodsodfbo')); var str = 'abiodsodfbo'; var index = str.indexOf('o'); var sum = 0; while (index !== -1) { console.log(index); sum +=1; index = str.indexOf('o',[index+1]); } console.log('一共'+ sum +'次'); </script>
⭐根据位置返回字符
<script> //根据位置返回字符 index索引 //1 charAt(index) 根据位置返回字符 var str = 'andy'; console.log(str.charAt(3));//返回str第三个元素y //遍历所有的字符 for (var i = 0; i < str.length; i++) { console.log(str.charAt(i)); } //2 charCodeAt(index) 返回相应索引号的字符ASCII值 目的:判断用户按了哪个键 console.log(str.charCodeAt(0));// a----97 //3 str[index] H5新增的 console.log(str[0]);//a </script>
统计出现最多的字符和次数
<script> //有一个对象 判断是否有该属性 var o = { age: 18 } if (o['sex']) { console.log('有这个属性'); }else { console.log('没有该属性'); } //判断一个字符串'abiodsodfbo'中出现次数最多的字符 并统计其次数 //核心算法:利用charAt() 遍历这个字符串 //把每个字符都存储给对象 如果对象有该属性就为1 如果存在了就+1 // 遍历对象 得到最大值和该字符 var str = 'abiodsodfbo'; var o = {}; for (var i= 0; i <str.length; i++){ var chars = str.charAt(i);//chars 是字符串额每一个字符 if (chars in o) { o[chars]++; }else { o[chars] = 1; } } console.log(o); console.log(typeof o[chars]); //2 遍历对象 for in var max = 0; var ch = ''; for (var k in o) { // k 得到的是属性名 //o[k] 得到的是属性值 if (o[k] > max) { max = o[k]; ch = k;//k是最大的属性名 } } console.log(max); console.log(ch); </script>
字符串的操作方法
<script> //字符串操作方法 //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个字符 </script>
其他方法
<script> //1 替换字符 replace('被替换的字符','替换为的字符') var str = 'anady'; console.log(str.replace('a','b'));/* 把a替换成b 如果有多个a 只会替换第一个a*/ //小案例 有一个'abceosofgopp' 把o替换为* var str1 = 'abceosofgopp'; while(str1.indexOf('o') !== -1){ str1 = str1.replace('o','*'); } console.log(str1); //2 字符串转换为数组split('分隔符') join是把数组转换为字符串 var str2 = 'red,blue,pink'; console.log(str2.split(',')); var str3 = 'red&blue&pink'; console.log(str3.split('&')); </script>