目录
1.什么是内置对象
2.Math对象
(1)最大值与最小值
<script>
console.log(Math.PI);
// 一个属性,圆周率;
console.log(Math.max(1,2,99));
// 求最大值
console.log(Math.min(1,2,6));
// 求最小值;
console.log(Math.max(1, 2, "hsbx"));
// 存在非数字的则返回NaN;
console.log(Math.max());
// 如果没有参数,则返回-Infinity
</script>
用对象封装自己的数学对象
<scipt>
var myMath = {
PI:3.1415916,
max: function(){
var max = arguments[0];
for(var i = 1;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(Math.max(1,22,66));
console.log(Math.min(1, 22, 66));
</scipt>
(2)Math绝对值与三个取整方法
// 绝对值方法
console.log(abs(-1));
// 1
console.log(abs(1));
// 1
console.log(abs('-1'));
//隐式转化会把字符串型'-1'转化为数字型
console.log(abs('pink'));
// NaN
// 2.三个取整方法
// (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()
// 四舍五入 其他数字是四舍五入,但是5特殊,它往大了取
console.log(Math.round(1.1));
// 1
console.log(Math.round(1.5));
// 2
console.log(Math.round(1.9));
// 2
console.log(Math.round(-1.1));
// -1
console.log(Math.round(-1.5));
// -1
(3)随机数random()
//1.Math对象随机数方法 random() 返回一个随机的小数 x属于 [0,1)
//2.这个方法里面不跟参数
// 3.代码验证
console.log(Math.random());
// 得到两个数之间的随机整数,并且包含这两个数
// Math.floor(Math.random()*(max-min+1))+min
function getRandom(min,max){
Math.floor(Math.random() * (max - min + 1)) + min
}
console.log(getRandom(1,10));
// 随机点名
function getRandom(min, max) {
Math.floor(Math.random() * (max - min + 1)) + min
}
var arr = ['zs','ls','zg','yg'];
console.log(arr[getRandom(0,arr.length-1)]);
<script>
// 猜数字案例
function getRandom(min, max) {
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>
3.日期对象
<script>
// Date()日期对象 是一个构造函数,必须使用new来调研创建我们的日期对象
var arr = new Array();
// 创建了一个数组对象
var obj = new Object();
// 创建一个对象实例
// 1.使用Date
var date = new Date();
console.log(date);
</script>
// 1.使用Date 如果没有参数,返回当前系统的当前时间
var date = new Date();
console.log(date);
// 2.参数常用的写法 数字型:2023,11,10 或者是字符串型:'2023-11-10 8:8:8'
var date1 = new Date(2023, 11, 10);
console.log(date1);
// 返回的是10月,不是11月
var date2 = new Date('2023-11-10 8:8:8');
console.log(date2);
(1)日期格式化之年月日
<script>
// 格式化日期 年月日
var date = new Date();
console.log(date.getFullYear());
// 返回当前日期的年:2023年
console.log(date.getMonth());
// 返回当前日期的月:10月,不是11月 返回的月份小一个月
console.log(date.getMonth()+1);
// 加1即可正常
console.log(date.getDate());
// 返回的是几号
console.log(date.getDay());
//返回星期几(周0-周六)
// 写一个2023年11月10日星期三:
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]);
</script>
(2)日期格式化之时分秒
<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>
(3)获取日期总的毫秒形式(时间戳)
计算机起始时间:1970年1月1日
<script>
// 获得Date总的毫秒数(时间戳) 不是当前时间的毫秒数,而是距离1970年1月1日过了多少毫秒数
// 1、通过valueOf() getTime()
var date = new Date();
console.log(date.valueOf());
console.log(date.getTime());
// 2.简单的写法(最常用)
var date1 = +new Date();
// +new Date() 返回的就是总的毫秒数
console.log(date1);
// 3.H5新增的方法,获得总的毫秒数
console.log(Date.new());
</script>
(4)倒计时案例
<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);
// parseInt作用是取整
var h = parseInt(times / 60 / 60 % 24);
d = d < 10 ? '0' + d : d;
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('2023-11-11 18:00:00'));
</script>
4.数组对象
(1)数组创建的两种方式
(2)检测是否为数组
<script>
// 检测是否为数组
// (1) instanceof 运算符 它可以用来检测是否为数组
var arr = [];
var obj = {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);
// (2) Array.isArray(参数);
console.log(Array.isArray(arr));
console.log(Array.isArray(obj));
</script>
(3)添加数组元素
增加:
// 1.push()在我们数组的末尾添加一个或者多个数组元素
var arr = [1,2,3];
arr.push(4,'pink');
console.log(arr);
// (1)push 是可以给数组追加新的元素
// (2)push () 参数直接写数组元素就可以了
// (3)push完毕后,返回的结果是新数组的程度
// (4)原数组也会发生变化
console.log('----------------------------');
// 2.unshift 在我们数组的开头添加一个或者多个数组元素
arr.unshift('red','purple');
console.log(arr);
// (1)unshift 是可以给数组前面追加新的元素
// (2)unshift () 参数直接写数组元素就可以了
// (3)unshift完毕后,返回的结果是新数组的程度
// (4)原数组也会发生变化
删除:
<script>
// 3.pop()它可以删除数组最后一个元素
var arr = [1,2,3];
arr.push(4,'pink');
arr.unshift('red','purple');
arr.pop();
console.log(arr);
// (1)pop 是可以删除数组最后一个元素 一次只能删除一个
// (2)pop () 没有参数
// (3)pop完毕后,返回的结果是删除的那个元素
// (4)原数组也会发生变化
console.log('----------------------------');
// 4.shift() 它可以删除数组的第一个元素
arr.shift();
console.log(arr);
// (1)shift 是可以删除数组第一个一个元素 一次只能删除一个
// (2)shift () 没有参数
// (3)shift 完毕后,返回的结果是删除的那个元素
// (4)原数组也会发生变化
</script>
<script>
var arr = [1500,1200,2000,2100,1800];
var newArr = [];
for(var i = 0;i<arr.length;i++){
if(arr[i]<2000){
newArr.push();
}
}
console.log(newArr);
</script>
(4)数组排序
<script>
// 数组排序
// 1.翻转数组
function reverse(arr) {
if (arr instanceof Array) {
var newArry = [];
for (var i = arr.length - 1; i >= 0; i--) {
newArry[newArry.length] = arr[i];
}
return newArry;
}
else {
return '这个参数要求必须是数组格式[1,2,3]';
}
}
console.log(reverse([1, 2, 3]));
console.log(reverse(1, 2, 3));
// 2.数组排序(冒泡排序)
var arr1 = [3,4,7,1];
arr1.sort();
console.log(arr1);
</script>
冒泡排序的特殊情况:
var arr1 = [13,4,77,1,7];
arr1.sort();
console.log(arr1);
// 出现双位数时,sort会优先排序最左边的数字;
// 解决方案:(固定写法)
var arr1 = [13, 4, 77, 1, 7];
arr1.sort(function(a,b){
return a - b;
// 按照升序的顺序排序,降序则是:b-a;
})
console.log(arr1);
(5)获取数组索引
var arr = ['pink','blue','red','green'];
console.log(arr.indexOf('blue'));
返回值为:1
若同时存在两个blue:只返回第一个满足条件的索引号
若在该数组里面找不到元素,则返回值:-1
// 数组去重
function unique(arr2){
var newArr2 = [];
for (var i = 0; i < arr2.length; i++) {
if (newArr2.indexOf(arr2[i] === -1)) {
newArr2 .push(arr2[i]);
}
}
return newArr2;
}
var demo = unique(['c', 'a', 'z', 'a', 'x', 'a', 'x', 'c', 'b']);
console.log(demo);
(6)数组转化为字符串
<script>
// 数组转化为字符串
// 1.toString() 将我们的数组转化为字符串
var arr = [1,2,3];
console.log(arr.toString());
// 2.join(分隔符)
var arr1 = ['greeen','pink','red'];
console.log(arr1.join(' & '));
</script>
5.字符串对象
(1)基本包装类型
(2)字符串的不可变性
(3)根据字符返回位置
<script>
var str = "oabcoefoxyozzopp";
var index = str.indexOf('o');
var num = 0
while(index !== -1) {
console.log(index);
num++
index = str.indexOf('o',index + 1);
}
console.log('o出现的次数是:' + num);
</script>
(4)根据位置返回字符(重点)
<script>
//1. 根据位置返回字符
console.log('----------------');
var str1 = 'andy';
console.log(str1.charAt(3));
//遍历所有的字符
for(var i = 0;i<str1.length;i++){
console.log(str1.charAt(i));
}
</script>
<script>
// 2.charCodeAt(index) 返回相应索引号的字符ASCII值 目的: 判断用户按下了哪个健
console.log(str1.charCodeAt(0));
</script>
(5)字符串的操作方法(重点)
<script>
//字符串操作方法
//1。concat('字符串1','字符串2'......)
var str2 = 'andy';
console.log(str2.concat('red'));
</script>
<script>
// 2.substr('截取的起始位置','截取几个字符')
var str3 = '改革春风吹满地';
console.log(str3.substr(2,2))
// 第一个2是索引号的2,从第几个开始,第二个2是取几个字符
</script>
若出现重复的字符则只会替换第一个字符