25-1 JavaScript基础 内置对象 Math Date 数组对象

1.内置对象

js中的对象分为3种:自定义,内置对象,浏览器对象
前面两种对象是js基础内容,属于ECMAScript:第三个浏览器对象属于JS独有的
  • js提供了多个内置对象:Math,Date,Array,String

1.2 Math对象

Math对象不是构造函数,它具有数学常数和函数的属性和方法.
属性、方法名功能
Math.PI圆周率
Math.floor()向下取整,1.1-1,1.9-1
Math.ceil()向上取整 1.1-2,1.9-2
Math.round()四舍五入版 就近取整 注意 -1.5 结果是 -1,会往大取值,.5比较特殊
Math.abs()绝对值,隐式转换会把字符串型-1转换为数字型
Math.max()/Math.min()求最大和最小值
Math.random()获取范围在[0,1)内的随机值
**获取指定范围内的随机整数**:
	Math.random() 
	Math.random() * 5 = [0,5)
	Math.random() * (10-5)+5= [5,10)
	总结 Math.random()*(max - min) + min;
function getRandom(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min; 
}

1.4 日期对象

Date 对象和Math对象不一样,Date是一个构造函数,所以使用时需要new实例化后才能使用其中具体方法和属性.
Date 实例用来处理日期和时间
  • 使用Date实例化日期对象
    • 获取当前时间必须new实例化:
	var now = new Date();
  • 获取指定时间的日期对象
    var date2 = new Date('2019/5/1');
    
      注意:如果创建实例时并未传入参数,则得到的日期对象是当前时间对应的日期对象
    

1.41 封装函数 格式化日期 年月日 时分秒

function getTime(){
	var  date = new Date();
	
	var year = date.getFullYear();
	var month = date.getMonth() + 1;
	var date1 = date.getDate();
	var arr = ['星期天','星期一','星期二','星期三','星期四','星期五','星期六' ]
	var day = date.getDay();
	
	var h = date.getHours();
	h = h < 10 ? '0' + h : h;
	var m = date.getMinutes();
	m = m < 10 ?  '0' + m : m;
	var s = date.getSeconds();
	s = s < 10 ? '0' + s : s;
	return year +'年' + month + '月' + date1 +'日' + arr[day]  + h + ':' + m + ':' + s
}
console.log(getTime());

1.42 通过Date实例数去总毫秒数

  • 总毫秒数基于:1970年1月1日起的毫秒数
	// 实例化Date对象
	var now = new Date();
	// 1.用于获取对象的原始值
	console.log(date.valueOf());
	console.log(date.getTime());
	// 2.简单写法(最常用的)
	var now = +new Date();
	// 3.HTML5中的方法,兼容问题
	var now = Date.now();
	

1.5 倒计时

        // 1.核心算法: 输入的时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿分秒相减,会是负值
        // 2. 用时间戳来做.用户输入的时间总的毫秒数减去现在时间的总的毫秒数,得到的就是剩余的毫秒数
        // 3. 把剩余时间总的毫秒数转换为天时分秒(时间戳转为时分秒)

        // 创建函数
        function countTime(times) {
            // 1.获取现在的时间戳
            var nowTime = +new Date();
            // 2. 用户输入的时间戳
            var inputTime = +new Date(times);
            // 3. 计算剩余时间戳
            var times = (inputTime - nowTime) / 1000; // 转为秒
            // 4. 计算天时分秒  一定要记得转换成parseInt类型不然输出的就是小数类型~!!!!!!!!
            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;


            // 5.返回值
            return d + '天' + h + '时' + m + '分' + s + '秒';
        }
        console.log(countTime('2020,7,26 19:00:00'));

1.6 数组对象

1.61创建数组的两种方式
  • 字面量
    var arr = [1,'test',true];
    
  • new Array()
    var arr = new Array();
    

注意:上面arr创建的数组是一个空数组,如果需要使用构造函数Array创建非空数组,可以在创建数组时传参

	var arr = new Array(2);
	如果只给一个参数,则参数规定了数组长度
   var arr = new Array(2,3);
   如果给了多个参数,则参数称为数组的元素,相当于[2,3]
1.62 检测是否为数组
  • 1.instanceof运算符 它可以用来检测是否为数组
	var arr = [ ];
	var obj = [ ];
	console.log(arr instancof Array);
	console.log(obj instancof Array);
  • 2.Array.isArray(参数);H5增加 IE9以上支持.
	console.log(Array.isArray(arr));
	console.log(Array.isArray(obj));
1.63 添加删除数组元素方法

1.push() 在数组的末尾 添加一个或者多个数组元素

	push完毕之后,返回值时新数组的长度,
	原数组也会发生变化
	var arr = [1,2,3];
	console.log(arr.push('zzm','black'));//返回的结果是新数组的长度
	console.log(arr);//原数组会发生变化

2.unshift() 在数组的开头,添加一个或者多个数组元素

	1.unshift()参数直接写数组元素就可以了
	2.结束后返回的结果是新数组的长度,原数组也会发生改变

2.1concat()链接两个或多个数组

1.不会改变现有数组,而仅仅返回被链接数组的一个副本
2.里面的参数可以是具体的值,也可以是数组对象,可任意多个
3.返回的是一个新的数组,该数组时通过把所有arrX参数添加到arr中生成的.如果要进行concat()操作的参数时数组,那么添加的时数组中的元素,而不是数组
	arr.concat(arr2,arr3,arr4);
	

3.pop()删除数组的最后一个元素

1.删除数组最后一个元素,一次只能删除一个元素
2.没有参数,完毕后,返回结果是删除的那个元素
3.原数组也发生改变

4.shift();删除数组第一个元素

同上

5.slice(start,end)可从已有的数组中返回选定的元素

1.start必须,规定从何处开始选取.不包括开始的那个数,如果是负数,那么它规定从数组尾部开始算起的未知,-1指的最后一个元素,-2指的是倒数第二个元素,以此类推.
2.end,可选,规定从何处结束,如果没有指定那么一直到数组所有元素,如果是负数,那么从数组尾部开始算起得元素
	var arr = [1,2,3,4,5];
	console.log(arr.slice(3,end));// 返回值[4,5]
	//语法 arr.slice(start,end);

6.splice()向/从数组中添加/删除项目,然后返回被删除的项目

1.该方法会改变原数组
2.返回值 Array,包含被删除项目的新数组,如果有的话
	arr.splice(index,howmany,item1,...,itemsX)
	index .必须 ,整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置
	howmany .必须.要删除的项目数量.如果设置为0,则不会删除项目
	item1,...,itemX. 可选.像数组添加的新项目
1.64 筛选数组
有一个包含工资的数组[1500,2000,2100,1800],要求把数组中工资超过2000的删除,剩余的放到新数组里面
	var arr = [1000,1200,1400,1600,2000,2200];
	var newArr = [];
	for (var i = 0 ; i <= arr.length; i++){
		if(arr[i] < 2000){
			newArr,push(arr[i]);
   }
	}
	console.log(newArr);
1.65 数组排序
  • 1.翻转数组
	var arr = [1,2,3,4,5];
	arr.reverse();
	console.log(arr);
  • 2.数组排序(冒泡排序)
	var arr = [1,10,100,200];
	arr.sort(function(a,b){
	return a-b;//升序排列
	return b -a;//降序排列
})
	console.log(arr);
1.66 数组去重
	1.目标:把旧数组里面不重复的元素选取出来放到新数组中,重复的元素只保留一个
 	2.核心算法:遍历数组,然后拿旧数组元素去查询新数组,如果该元素在新数组中不存在就添加
 	3.利用 新数组.indexOf(数组元素) 如果返回-1就说明没有该元素
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 arr1 = unique(['c','a','z','x','a','b'])
console.log(arr1);

1.67 数组转换为字符串
1.toString() 将数组转换为字符串
	var arr = [1,2,3];
	console.log(arr.toString()); //输出字符串类型 1,2,3
2.join(分隔符);
	var arr1 = ['green','pink','red'];
	console.log(arr1.join()); // green,pink,red;
	console.log(arr1.join('&'));// green&pink&red;

2.字符串对象

2.1 基本包装类型
js提供了三个特殊的引用类型:string,Number和Boolean.
基本包装类型就是把简单数据类型包装称为复杂数据类型,这样基本数据类型就有了属性和方法
	var str = 'zzm';
	console.log(str.length);
基本数据类型无属性和方法,而对象才有,但上面却可以执行,因为js把基本数据类型包装为了复杂类型,
	1.生成临时变量,把简单类型包装为复杂数据类型
	var temp = new String('zzm');
	2.赋值给我们声明的字符变量
	str = temp;
	3.销毁临时变量
	temp = null;
2.2字符串的不可变
里面的值不可变,虽然看上去内容改变了,但其实是地址值变了,内存中新开辟了一个内存空间
当重新给字符串赋值的时候,变量之前保存的字符串不会被修改,依然在内存中重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
由于字符串的不可变,在大量拼接字符串的时候会有效率问题
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不停喝水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值