JS学习-内置对象

目录

1、Math数学对象

1.1、封装数学对象

1.2、Math绝对值和三个取整方法

 1.3、取随机整数方法random( )

1.4、猜数字案例

2、Date日期对象

2.1、格式化日期 (年月日 时分秒)

2.2、获取日期的总的毫秒形式

2.3、做一个倒计时案例

3、数组对象

3.1、检测是否为数组

 3.2、添加删除数组

3.3、数组排序

 数组去重案例

4、字符串对象

4.1、基本包装类型

4.2、根据字符返回位置

4.3、求字符串出现的次数及位置

4.4、根据位置返回字符

 4.5、判断一个字符串出现次数最多的字符并统计次数

4.6、拼接及截取字符串 

4.7、替换字符串及字符转换成数组

 4.8、总结综合练习


JavaScript中的对象分为3种:自定义对象、内置对象、浏览器对象

前面两种对象时JS基础内容 属于ECMAScript,而浏览器对象是属于JS独有的

内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法)

内置对象最大的优点就是帮助快速开发


1、Math数学对象

// Math数学对象 不是一个构造函数 所以不需要用new来调用 而是直接使用里面的属性和方法

console.log(Math.PI); // 圆周率 3.141592653589793

console.log(Math.SQRT2); // 2的平方根 1.4142135623730951

console.log(Math.max(1,0,-3,4,99)); // 最大值 99

console.log(Math.min(-1,-3,-9,0,1)); // 最小值 -9

console.log(Math.max(1,4,'幼兒园扛把子')); // 带有非数字类型的 输出NaN

console.log(Math.max()); // 不带任何值 输出 -Infinity

1.1、封装数学对象

var myMath = {
				PI: 3.141592653589793,
				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);
			console.log(myMath.max(1,4,8,77,55));
			console.log(myMath.min(-2,-3,4,0,99));

1.2、Math绝对值和三个取整方法

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

			Math.PI          		// 圆周率
			Math.floor()     		// 向下取整  往最小取
			Math.ceil()		 		// 向上取整  往最大取
			Math.round()			// 四舍五入
			Math.abs()				// 绝对值
			Math.max()            	// 求最大值
            Math.min()              // 求最小值  
四舍五入里 .5跟其它数字不一样 比较特殊

 1.3、取随机整数方法random( )

// 取随机数random
			// 1. Math对象随机数方法 random() 返回一个随机的小数 0 =< x < 1
			// 2. 取随机数方法里面不跟参数

			// 3. 代码体验
			 console.log(Math.random());

			// 4. 想要得到两个数之间的随机整数 并且包含这2个整数
			公式: 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));
			
			// 5. 随机点名
			var arr = ['张三','李四','小明','小薛','流星'];
			console.log(arr[getRandom(0,arr.length - 1)]);

1.4、猜数字案例

随机生成 1-10 之间的任意数字

弹出输入框 让用户输入一个数字 

如果与结果大 则提示大了 继续猜 小了就提示小了 继续猜

如果猜中了 则退出循环 结束程序

// 先套用公式

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; // 猜中结束退出全部循环
				}
			}


// 猜1-50之间的数字 机会只有10次

for (var i = 1;i <= 10; i++) {
				var num = prompt('请输入1-50之间的数字:');
				if (num > random) {
					alert('你猜的大了,你还有'+ (10-i) +'次机会');
				} else if (num < random) {
					alert('你猜的小了,你还有'+ (10-i) +'次机会');
				} else {
					alert('猜对了,你真厉害!,只用了'+ (10-i) +'次机会就猜对了');
					break;
				}
			}

2、Date日期对象

			// Date() 日期对象 是一个构造函数 必须使用new 来调用创建我们的日期对象

			var arr = new Array(); // 创建一个数组对象
			var obj = new Object(); // 创建一个对象实例

			// 1. 使用Date 如果没有输入参数 则返回当前系统的当前时间
			var date = new Date();
			console.log(date);

			// 2. 参数常用的写法 数字型 2021,08,26  字符串型'2021-08-26 10:18:08'

			// 例
			var date1 = new Date(2021,08,26);
			console.log(date1); // 返回的是9月 而不是 8月 星期也不对 不推荐此写法
			var date2 = new Date('2021-08-26 10:18:08'); // 或者2021/08/26
			console.log(date2);

2.1、格式化日期 (年月日 时分秒)

// 格式化日期 年月日

var date = new Date();
console.log(date.getFullYear()); // 获取当前日期的年份
console.log(date.getMonth() + 1); // 获取当前日期的月份 但是返回的月份是小一个月的 所以需要+1
console.log(date.getDate()); // 返回的是当前日期的几号
console.log(date.getDay()); // 一周从周日开始 周日是0 周一返回的是1 周六返回的是6
			
// 写一个日期 2021年8月26日 星期四

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());
			
// 封装一个函数 返回当前系统时间的时分秒 格式 00:00:00

			function getTime() {
				var time = new Date();
				var hour = time.getHours();
				hour = hour < 10 ? '0' + hour : hour;
				var minute = time.getMinutes();
				minute = minute < 10 ? '0' + minute : minute;
				var second = time.getSeconds();
				second = second < 10 ? '0' + second : second;
				return hour + ':' + minute + ':' + second;
			}
			console.log(getTime());

2.2、获取日期的总的毫秒形式

Date对象时基于1970年1月1日(世界标准时间)起的毫秒数

我们经常利用总的毫秒数来计算时间,因为这样更精确

// 获得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.now());

2.3、做一个倒计时案例

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; // times是剩余时间总的毫秒数 毫秒换算成秒 /1000
				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('2021-8-30 15:00:00'));
			var date = new Date;
			console.log(date);

3、数组对象

3.1、检测是否为数组

			// 检测是否为数组
			// (1) instanceof 运算符 它可以用来检测是否为数组
			var arr = [];
			var obj = {};
			console.log(arr instanceof Array);
			console.log(obj instanceof Array);
			// (2) Array.isArray(参数)  H5新增的方法 ie9以上版本支持
			console.log(Array.isArray(arr));
			console.log(Array.isArray(obj));



		// 案例 翻转数组
		function reverse(arr) {
			// if (arr instanceof Array) {
			if (Array.isArray(arr)) {
				var newArr = [];
				for (var i = arr.length - 1; i >= 0; i--) {
					newArr[newArr.length] = arr[i];
				}
				return newArr;
			} else {
				return '这个参数要求必须是数组格式[1,2,3]'
			}
		}
		console.log(reverse([1,2,3]));
		console.log(reverse(1,2,3));

 3.2、添加删除数组

 添加数组

		// 1. push() 在数组的末尾添加一个或者多个数组元素
		var arr = [1,2,3];
		// arr.push(4,5,6);
		console.log(arr.push(4,5,6));
		
		console.log(arr);
		// (1) push 是可以给数组结尾追加新的元素
		// (2) push() 参数直接写数组元素就可以
		// (3) push完毕之后,返回的结果是 新数组的长度
		// (4) 原数组也会发生变化
		
		// 2. unshift 在数组的开头添加一个或者多个数组元素
		console.log(arr.unshift(9,8,7))
		
		console.log(arr);
		// (1) unshift 是可以给数组开头追加新的元素
		// (2) unshift() 参数直接写数组元素就可以
		// (3) unshift完毕之后,返回的结果是 新数组的长度
		// (4) 原数组也会发生变化

删除数组

		// 3. pop() 可以删除数组的最后一个元素
			console.log(arr.pop());
			console.log(arr);
		// (1) pop可以删除数组的最后一个元素 记住一次只能删除一个元素
		// (2) pop() 
		// (3) pop完毕之后,返回的结果是 删除的那个数组元素
		// (4) 原数组也会发生变化	
		
		// 4. shift() 可以删除数组的第一个元素
		console.log(arr.shift());
		console.log(arr);
		// (1) shift可以删除数组的第一个元素 记住一次只能删除一个元素
		// (2) shift() 没有参数
		// (3) shift完毕之后,返回的结果是 删除的那个数组元素
		// (4) 原数组也会发生变化	

筛选数组   把大于等于2000的数值删除

		var arr = [1500,1200,2000,2100,1800];
		var newArr = [];
		for (var i = 0; i < arr.length; i++) {
			if (arr[i] < 2000) {
				newArr.push(arr[i]);
				// newArr[newArr.length] = arr[i];  老方法
			}
		}
		console.log(newArr);

3.3、数组排序

 翻转数组

		var arr = [1,2,3];
		arr.reverse();
		console.log(arr);

数组排序(冒泡排序)

		var arr1 = [33,4,5,6,7,8,9];
		arr1.sort(); // sort方法只适用于单个数字排序 双位则失效
		console.log(arr1)
		// 解决方法
		var arr2 = [7,4,8,6,88,65,9];
		arr2.sort(function(a,b){
			return a - b; // 升序排序
			return b - a; // 降序排序
		})
		console.log(arr2)

获取数组元素索引号

// 返回数组元素索引号方法 indexOf(数组元素) 作用就是返回该数组元素的索引号 从前面开始查找
	// 它值返回第一个第一个满足条件的索引号
	// 它如果在该数组里面找不到元素,则返回的是 -1 
	var arr = ['red','blue','green','orange','darkred'];
	onsole.log(arr.indexOf('orange')); // 返回3
		
// 返回数组元素索引号方法 lastIndexOf(数组元素) 作用就是返回该数组元素的索引号 从后面开始查找
	var arr = ['red','blue','green','orange','darkred','orange'];
	console.log(arr.lastIndexOf('orange')); // 返回5

 数组去重案例

分析

			// 封装一个去重函数 unique(独一无二的)

            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','x','b','x','c','b','b']);
			console.log(demo);

数组转换为字符串

		// 数组转换为字符串
		// 1. toString() 将数组转换为字符串
		var arr = [1,2,3];
		console.log(arr.toString());
		
		// 2. join(分隔符)
		var arr1 = ['yellow','orange','blue'];
		console.log(arr1.join()); // 默认逗号
		console.log(arr1.join('-')); // 用横杠分隔


4、字符串对象

4.1、基本包装类型

			var str = 'andy';
			 console.log(str.length);
			// 对象 才有属性和方法  复杂数据类型才有属性和方法
			// 那么简单数据类型为什么会有length属性呢?
			// 基本包装类型:就是把简单数据类型 包装成为了复杂数据类型
			// (1) 把简单数据类型包装为复杂数据类型
			var temp = new String('andy');
			// (2) 把临时变量的值 给str
			str = temp;
			// (3) 销毁这个临时变量
			temp = null;

4.2、根据字符返回位置

			// 根据字符返回位置 str.indexOf('要查找的字符',[起始的位置])
			var str = '改革春风吹满地,春天来了';
			console.log(str.indexOf('春'));
			console.log(str.indexOf('春',3)); // 从索引号是 3 的位置开始往后查找

4.3、求字符串出现的次数及位置

            // 思路:先查找第一个o出现的位置
            // 然后 只要indexOf 返回的结果不是 -1 就继续往后查找
            // 因为indexOf 只能查找到第一个 所以后面的查找 一定是当前索引加1 从而继续查找

            // 查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数

			var str = "avcoefoxyzzopp";
			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);

			
			// 求red出现的次数和位置
			var str = ['red','blue','red','green','orange','red'];
			var index = str.indexOf('red');
			var num = 0;
			while (index !== -1) {
				console.log(index);
				num++;
				index = str.indexOf('red',index + 1);
			}
			console.log('red出现的次数为:'+ num);

4.4、根据位置返回字符

            // 1. charAt(index) 根据位置返回字符

			var str = 'aqet';
			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)); // a在ASCII码值里是97

			// 3. str[index] H5新增的
			console.log(str[0]);

 4.5、判断一个字符串出现次数最多的字符并统计次数

            // o.a = 1,  o.b = 1,  o.c = 1,  o.o = 4
            // 思路 利用charAt() 遍历这个字符串
            // 把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在了就 +1
            // 遍历对象 得到最大值和该字符

// 判断一个字符串'abcoefoxyozzopp'中出现次数最多的字符 并统计次数

			var str = 'abcoefoxyozzopp';
			var o = {};
			for (var i = 0; i < str.length; i++) {
				var chars = str.charAt(i); // chars是字符串的每一个字符
				if (o[chars]) { // o[chars]得到的是属性值
					o[chars]++;
				} else {
					o[chars] = 1;
				}
			}

			// 2. 遍历对象
			let max = 0;
			let ch = '';
			for (let k in o) {
				// k 得到的是属性名
				// o[k] 得到的是属性值
				if (o[k] > max) {
					max = o[k];
					ch = k;
				}
			}
			console.log(max);
			console.log('最多的字符是' + ch);

4.6、拼接及截取字符串 

			// 字符串操作方法
			// 1. concat('字符串1','字符串2'...)
			let str = '改革春风吹满地 ';
			console.log(str.concat('中国人民真争气'));
			
			// 2. substr('截取的起始位置','截取几个字符');
			let str1 = '改革春风吹满地';
			console.log(str1.substr(2,2)) // 第一个2是索引号 第二个2是取几个字符

4.7、替换字符串及字符转换成数组

			// 有一个字符串'abcoefoxyozzopp' 要求把里面所有的o替换为c
			let str1 = 'abcoefoxyozzopp';
			while (str1.indexOf('o') !== -1) {
				str1 = str1.replace('o','g')
			}
			console.log(str1);
			
			// 2. 字符转换为数组 split('分隔符') 前面学过的join是把 数组转换为字符串
			let str2 = 'red,blue,yellow';
			console.log(str2.split(','));
			let str3 = 'red&yellow&blue';
			console.log(str3.split('&'));


            // 转换大小写
			let str4 = 'anc';
			console.log(str4.toUpperCase('anc'));
			let str5 = 'PVE';
			console.log(str5.toLowerCase('pve'));

 4.8、总结综合练习

			// 字符串 'abaasdffggghhjjkkgfddsssss3444343'

			let str6 = 'abaasdffggghhjjkkgfddsssss3444343';

			// 1. 字符串的长度
			console.log(str6.length);

			// 2. 取出指定位置的字符,如:0,3,5,9等
			 console.log(str6.charAt(0));
			 console.log(str6.charAt(3));
			 console.log(str6.charAt(5));
			 console.log(str6.charAt(9));

			// 3. 查找指定字符是否在以上字符串中存在,如:i,c,b等
			let index = str6.indexOf('i');
			if (index !== -1) {
				console.log('存在');
			} else {
				console.log('不存在');
			}

			// 4. 替换指定的字符,如:g替换为22,ss替换为b等操作方法
			while (str6.indexOf('g') !== -1) {
				str6 = str6.replace('g',22);
			}
			console.log(str6);

			// 5. 截取指定开始位置到结束位置的字符串,如:取得1-5的字符串
			console.log(str6.substring(0,5)); // 因为数组索引号是从0开始

			// 6. 找出以上字符串中出现次数最多的字符和出现的次数
			let o = {};
			for (let i = 0; i < str6.length; i++) {
				let chars = str6.charAt(i);
				if (o[chars]) {
					o[chars]++;
				} else {
					o[chars] = 1;
				}
			}
			console.log(o)
			
			// 出现的次数
			let max = 0;
			let ch = '';
			for (let k in o) {
				if (o[k] > max) {
					max = o[k];	
					ch = k;
				}
			}
			console.log('出现最多的字符为'+ ch);
			console.log('次数为'+ max);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值