1、冒泡排序
两个相邻的元素进行比较,按照从小达大排序,如果左边的数字比右边的要大就交换数据
2、选择排序
假设第一个元素是最小值,反复使用其他的元素分别与最小值做比较,如果假设不成立,使用新的最小值继续比较,同时也会记录最小值的下标。比较完毕,将第一个元素与最小值进行位置交互
3、ES5中语法
1、严格模式:设置代码规范的 让代码更加严谨
1、禁止隐式创建变量
2、禁止函数形参同名
3、禁止普通函数this直接表示window对象
使用严格模式 代码第一行示使用"use strict"
2、ES5中新增的数组方法
1、indexOf 用于查找数组中是否存在指定的元素,存在返回的是下标 否则 -1
2、forEach(function(item,index){}) 数组遍历
3、map:map方法匿名函数要求返回具体的值,最后每个元素执行匿名函数返回值组合成为一个新数组
4、filter:匿名函数中要求返回布尔值,通过布尔值决定循环的元素是否保留,最后返回一个新数组
5、reduce:归并方法
arr.reduce(function(prev,next,index){},init) 匿名函数中一定要返回内容方便下次使用
4、字符串
ASCII:字符与数字的对应表格
字符串比较大小:字符串在比较大小是按照ASCII值进行比较,按照字符顺序逐个比较,如果有一个可以确定大小关系了比较就终止
字符串基本操作:将字符串按照数组使用
字符串中内置函数
1、字符串截取方法
substr(开始位置,长度)
substring(开始位置,结束位置)
slice(开始位置,结束位置)
2、字符串替换 replace()
3、转换大小写
toLowerCase()
toUpperCase()
4、去空格 trim()
5、字符串分割 split()
Math
JS中内置Math进行数学运算。Math下的方法都是使用Math.方法名称调用
1、round
// 1、 取整 但是是按照四舍五入规则
console.log(Math.round(1.6))
2、向上取整
// 2、向上取整 不论小数点 后的数字是比5大还是小
console.log(Math.ceil(1.2));
3、向下取整
// 3、向下取整
console.log(Math.floor(1.8));//1
4、绝对值
// 4、绝对值
console.log(Math.abs(-9));//9
5、开平方
console.log(Math.sqrt(4));
6、计算次方
// 6、计算次方 第一个参数是计算数字 第二个参数是 次方数
console.log(Math.pow(4,2));
// console.log(4 ** 2)
7、随机数
// 8、随机数
console.log(Math.random()); //随机生成0-1之间的小数 但是不包含1
8、封装生成指定区间的随机数
/**
* 生成随机数
* @param {Number} min 开始数字
* @param {Number} max 结束数字
* @param {Boolean} hasEnd 是否包含结束位置 true包含 否则 不包含
*/
function makeRandom(min,max,hasEnd){
if(hasEnd){
return Math.floor(Math.random()*(max-min+1)+min);
}
return Math.floor(Math.random()*(max-min)+min);
}
9、随机点名
<script src="common.js"></script>
<script>
var arr = ['孙悟空','亚索','嘉文','赵信','盖伦'];
btn1.onclick = function(){
// 生成随机名字 就是生成随机下标
var index = makeRandom(0,arr.length,false);
span1.innerHTML = arr[index];
}
</script>
Date
Date对象获取
1、不传递参数
// 1、获取到当前时间的对象 Thu Aug 11 2022 14:06:56 GMT+0800 (中国标准时间)
var d = new Date();
// d 确实是对象 只是输出时系统会自动的显示为 年月日 时间
console.log(d);
console.log(typeof d);
2、传递数字参数
// 2、传递数字参数 参数分别表示 年、月、日、时、分、秒
// 月份按照国外的表示方式 不是数字1-12 而是0-11
// var d = new Date(2022,8,11,12,12,12);
// var d = new Date(2022,1,30,12,12,12)
console.log(d)
3、传递字符串方式获取对象
// 3、传递字符串方式获取对象
var d = new Date('2022.08.09 12:12:12');
d = new Date('2022-08-09');
d = new Date('2022/09/09')
console.log(d)
Date对象获取时间方法
var d = new Date();
// 获取年份
console.log(d.getFullYear());//2022
// 获取月份 范围在0-11之间
console.log(d.getMonth());
// 获取日期
console.log(d.getDate());
// 获取到星期几
console.log(d.getDay());
// 获取小时
console.log(d.getHours());
// 获取分钟
console.log(d.getMinutes());
// 获取秒钟
console.log(d.getSeconds());
// 获取毫秒值 1s=1000毫秒
console.log(d.getMilliseconds());
// 获取到当前时间戳数字(毫秒单位) 时间戳是1970到现在的秒数
console.log(d.getTime())
// 方法名称中包含UTC 表示标准格林威治时间
console.log(d.getUTCHours())
console.log(d)
英文时间转化成字符串案例
var str = 'Thu Aug 11 2022 14:34:57 GMT+0800 (中国标准时间)';
var d = new Date(str);
var y = d.getFullYear();
var m = d.getMonth() + 1;
var date = d.getDate();
var h = d.getHours();
var minute = d.getMinutes();
var s = d.getSeconds();
console.log(y + '-' + m + '-' + date + ' ' + h + ':' + minute + ':' + s);
日期与时间戳转换
1、日期转换为时间戳
// 获取当前时间的时间戳 ,如果需要获取其他时间的时间戳可以传递参数
// var d = new Date();
// console.log(d.getTime());
// 获取当前时间戳
// console.log(+new Date())
console.log(Date.parse('2022-08-11'))
2、时间戳转换为日期
var time = 1560199544356;
var d = new Date();
// 以当前的时间戳设置d对象对应的时间
console.log(d.setTime(time));//返回的结果不是对象
// d.setTime(time).getMonth() 写法错误
console.log(d)
计算日期差案例
var t1 = '2022-08-11';
var t2 = '2022-09-12';
// 计算两个时间相差的秒数
var diffSeconds = Math.abs(Date.parse(t1) - Date.parse(t2)) / 1000;
// 计算相差的天数
var d = Math.floor(diffSeconds / (24 * 3600));
// 计算相差的小时
var h = Math.floor((diffSeconds - d * 24 * 3600) / 3600);
// 计算相差的分钟
var m = Math.floor((diffSeconds - d * 24 * 3600 - h * 3600) / 60);
// 计算相差的秒数
var s = (diffSeconds - d * 24 * 3600 - h * 3600) % 60
console.log(d + '天' + h + '小时' + m + '分' + s + '秒');
显示中文时间案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var str = '2022-08-11 15:39:45';
var d = new Date(str);
// 设置数字0-9与中文的对应关系
var chinese = ['零','一','二','三','四','五','六','七','八','九'];
function formatYear(year){
var result = '';
// 将数字转换为字符串 在分割为数组
year.toString().split('').forEach(function(item){
result += chinese[item];
})
return result;
}
// 将其他的时间转换为中文
function format(number){
/*
number值是在0-60之间的一个数字
<10 直接显示对应的中文
=10 显示固定的十
<20 显示十 额外在加上最后数字的中文
>=20 显示第一个数字 加上 十 第二个数字如果为0 结束否则就再加上数字对应的中文
*/
var result = '';
if(number<10){
result = chinese[number];
}else if(number == 10){
result = '十';
}else if(number<20){
// 计算第二个数字
var index = number.toString()[1];
result = '十'+chinese[index];
}else{
// 30
result = chinese[number.toString()[0]]+'十';
if(number.toString()[1] != 0){
result += chinese[number.toString()[1]]
}
}
return result;
}
var year = formatYear(d.getFullYear());
var month = format(d.getMonth() + 1);
var date = format(d.getDate());
var hours = format(d.getHours());
var minutes = format(d.getMinutes());
var seconds = format(d.getSeconds());
console.log(year+'年'+month+'月'+date+'日'+hours+'点'+minutes+'分'+seconds+'秒');
//
</script>
</body>
</html>
设置时间
与获取时间相关的方法基本同名 区别在于前缀不一样
var d = new Date();
// 设置年份
// d.setFullYear(1991);
// 设置月份
d.setMonth(10);
d.setDate(20);
d.setHours(21);
console.log(d);
本地日期格式化
var d = new Date();
console.log(d);
// 按照本地计算机时间格式显示
console.log(d.toLocaleString());
console.log(d.toLocaleDateString());
console.log(d.toLocaleTimeString());
console.log(d.toUTCString()); //转换为格林威治时间