一、复习
1.数组 push()/pop()/unshift()/shift()
2.二维数组 数组中每个元素还是数组 [ [],[],[],[],[] ]
3.字符串对象 new String(12)
4.转义字符 \ ’ \n \t…
toUpperCase()/toLowerCase()/charAt()/charCodeAt()
indexOf()/lastIndexOf()/slice(start,end)/substr(start,count)
split('|')
5.匹配模式,
replace(/china/ig, value2) 查找替换
match(/china/ig) 数组
search(/china/i) 返回下标
‘hello’ length
二、学习一门编程语言的基本步骤
(1)了解背景知识:历史、现状、特点、应用场景
(2)搭建开发环境:编写hello world
(3)变量和常量
(4)数据类型
(5)运算符
(6)逻辑结构
(7)通用小程序
(8)函数和对象
(9)第三方库、框架
(10)实用的项目
三、一些对象
1.Math对象
*****************************************
abs() 取绝对值
floor() 向下取整
ceil() 向上取整
round() 四舍五入取整
max() 取一组数字的最大值
min() 取一组数字的最小值
pow(x,y) 取x的y次幂
PI 取圆周率
random() 取随机数 范围 >=0 <1
*****************************************
Math.random() //0~1 不含1
Math.random()*10 //0~10 不含10
Math.floor(Math.random()) //0~9整数
例子:
//随机点名:准备10个城市的名字,每次运行随机取1个
var city=['北京','上海','广州','深圳','成都','西安','南京','武汉','郑州','长沙','杭州','厦门','福州'];
//随机获取下标 0~9
//乘以10,再向下取整
var num=Math.random()*city.length;//city.length最好 !思考一下为什么?
num=Math.floor(num);
console.log(city[num]);
2.通过Unicode码获取对应字符
String.fromCharCode( 编码 )
3.Date对象
用于对日期时间进行存储和计算
(1)创建Date对象
new Date('2018/12/25 10:30:50')
new Date(2018,10,25,10,30,50) //第2个参数月份范围0~11
new Date() 存储当前的系统时间
new Date(1000*60*60*24) 存储的是距离计算机元年的毫秒数对应的日期时间
(2)获取Date对象中的日期时间
getFullYear()/Month()/Date()/Hours()/Minutes()/Seconds()
/Milliseconds(毫秒)/Day(星期)/Time(距离计算机元年毫秒数)
星期日~星期六 范围0~6
(3)转为本地日期时间格式
toLocaleString() //年-月-日 时:分:秒
toLocaleDateString() //年-月-日
toLocaleTimeString() //时:分:秒
(4)设置日期时间
setFullYear/Month/Date/Hours/Minutes/Seconds/
Milliseconds/Time
setTime设置距离计算机元年的毫秒数,一旦设置后,所有的日期时间都会受到影响。
(5)复制时间
var workTime=new Date('2019-8-26');
var copy=new Date(workTime); //对象是可以这样复制的
console.log(copy.toLocaleDateString()); // 2019-8-26
练习1:创建Date对象,保存员工的入职时间’2018-11-16’,3年后合同到期,合同到期前一个月续签合同,如果续签时间是周末,提前到周五。提前一周通知人力准备续签(提醒时间)。
分别打印入职时间、到期时间、续签时间、提醒时间。
练习2:计算当前时间距离2018年圣诞节还有 ?天?时?分?秒
//练习:创建Date对象,保存员工的入职时间'2018-11-16',3年后合同到期,合同到期前一个月续签合同,如果续签时间是周末,提前到周五。提前一周通知人力准备续签(提醒时间)。
//分别打印入职时间、到期时间、续签时间、提醒时间
var workTime=new Date('2018/11/16');
//复制一份入职时间,作为到期时间
var targetTime=new Date(workTime);
//获取年份在当前的基础之上加3,把结果设置成年份
targetTime.setFullYear(targetTime.getFullYear()+3);
//复制一个到期时间给续签时间
var newTime=new Date(targetTime);
//提前一个月,获取月份并在原来基础上减1,把结果设置为月份
newTime.setMonth(newTime.getMonth()-1);
//查看是否为周末
//获取星期
var day=newTime.getDay();
//如果周六,提前一天,如果周日,提前两天
if(day==6){
newTime.setDate(newTime.getDate()-1);
}else if(day==0){
newTime.setDate(newTime.getDate()-2);
}
//提前一周提醒
//复制续签时间
var remindTime=new Date(newTime);
//日期在原来的基础之上减7
remindTime.setDate(remindTime.getDate()-7);
console.log('入职时间:'+workTime.toLocaleDateString());
console.log('到期时间:'+targetTime.toLocaleDateString());
console.log('续签时间:'+newTime.toLocaleDateString());
console.log('提醒时间:'+remindTime.toLocaleDateString());
//练习:计算当前时间距离2018年圣诞节还有 ?天?时?分?秒
//两个Date对象
//当前时间
var now=new Date();
//圣诞节
var target=new Date('2018/12/25');
//计算两个Date对象相差的毫秒数
//var d=target.getTime()-now.getTime();
//两个对象直接相减,相差的毫秒数
var d=Math.abs(now-target);
//相差的时间转成秒为单位
//在原来基础之上除以1000
d/=1000;
//对结果进行向下取整
d=Math.floor(d);
//如何计算相差的天数=相差的秒/一天的秒数
var day=Math.floor(d/(24*60*60));
//如何计算相差的秒数=相差的秒%一天的秒数
//一天有86400
var hours=d%(24*60*60);
//把秒数转成小时
hours=Math.floor(hours/(60*60));
//如何计算相差的分钟=相差的秒数%一小时的秒数
var minutes=d%3600;
//把秒钟转成分钟
minutes=Math.floor(minutes/60);
//如何计算相差的秒钟=相差的秒数%一分钟的秒数
var seconds=d%60;
console.log('距离2018年圣诞节还有'+day+'天'+hours+'时'+minutes+'分'+seconds+'秒');
3.Number对象
new Number(数据)
创建Number对象,同时将数据转为数值型。
toFixed(n) 保留小数点后n位
toString(n) 将数值型转为字符串类型,n设置转换的进制(2,8,16)
Number.MAX_VALUE 获取计算机能存储的最大数值
Number.MIN_VALUE 获取计算机能存储的最小数值
4.Boolean对象
Boolean() / new Boolean()
创建Boolean对象,同时将数据转为布尔型
!!数据
将数据转为布尔型
!数据
非
Undefined、null、NaN、’ '(空)、0 是flase
toString()
将布尔型数据转为字符串
5.ES6
ECMAScript6
ES2017 ES2018
(1)块级作用域
使用let关键字声明的变量,只能在块级作用域下访问;
块级作用域:{ } if、else、while、do-while、for
里边大括号都是块级作用域。
let关键字声明的变量不存在声明提升。
{
let a=1;
var b=2;
console.log(a);
}
(2)箭头函数
是回调函数的另一种写法,和匿名函数不完全一致;
sort( (a,b)=>{
return a-b;
} );
如果函数体中只有一行代码,并且是return形式,可以简化为
sort( (a,b)=>a-b );
例子:
sort() 对数组中的元素进行排序,默认按照Unicode码由小到大排序
sort(function(a,b){
return a-b; //数字由小到大
//return b-a; //数字由大到小
});
var arr=[20,18,7,29,70];
console.log(arr.sort(function(a,b){
return a-b;
}));
//使用箭头函数
console.log(arr.sort((a,b)=>{
return b-a;
}));
//箭头函数的简化
console.log(arr.sort((a,b)=>b-a));
ES6电子版:http://es6.ruanyifeng.com/
四、课后任务
(1)复习今天内容,整理思维导图
(2)练习
双色球:随机取1~
33之间的6个数字(数组),不能重复,并且从小到大排序;随机取1~
16之间一个数字,和之前6个数字组成数组。
思路:不能重复从下标出手,能重复就正常随机。
//随机产生1~33数字,放入到数组中
var arr=[];
for(var i=1;i<=33;i++){
arr.push(i);
}
//准备空数组,存放获取的随机数
var newArr=[];
//随机取6个数字——循环6次
for(var i=0;i<6;i++){
//每次产生随机数,获取数组中的随机下标
//0~1 * 33 0~33
//随机下标=向下取整(随机数*数组长度)
var num=Math.floor(Math.random()*arr.length);
//arr[num],通过随机下标获取的元素
//把这个元素放到新数组中
newArr.push(arr[num]);
//使用splice删除已经找到的元素本身
arr.splice(num,1);
}
//排序
newArr=newArr.sort((a,b)=>a-b);
//取1~16之间的一个数字,不是在取下标
// 0~1*16 0~16 向下取整 0~15 +1 1~16
var num=Math.floor(Math.random()*16)+1;
//把num放到数组newArr中
newArr.push(num);
console.log(newArr);
(3)回顾服务器概念