Web前端之JS概述、函数和数组(9)——对象

一、复习

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)回顾服务器概念

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值