一、字符串常用方法
字符串特点:
字符串:字符串是被单引号或双引号包裹的零到多个字符。是js中基本数据类型。 在字符串中的每个字符,浏览器也都给他们分配了一个索引,第一字符的索引是0,第二字符的索引是1,第三个字符的索引是2...,所以通过 字符串[索引]的方式可以获取对应索引位置的字符。 字符串也是有length属性的,代表字符串中字符的个数;
tips: 有长度、有索引是不是可以用通过for 循环遍历它?
var str = 'EverestTraining';
字符串常用方法
I 通过制定索引获取字符或Unicode
1.1 charAt(index) 获取字符串中索引为index的字符。
var s = str.charAt(3);
console.log(s);
1.2 charCodeAt(index) 获取字符串中指定索引位置的字符的Unicode编码值,返回的是一个 0 - 65535的整数
var code = str.charCodeAt(5); // 69
II 复制和截取字符串
2.1 substr(n, m); 从n开始截取m个,若不写m,则截取到末尾。如果n和m都不写,这截取全部;
var s1 = str.substr(1, 2);
var s2 = str.substr(1);
var s3 = str.substr();
console.log(s1, s2, s3);
2.2 substring(n, m); 从索引n开始截取,截取到索引为m结束(不包含m),如果只写n,是从n开始截取到末尾;如果一个都不写,那就是截取全部;
var s4 = str.substring(1, 3);
var s5 = str.substring(1);
var s6 = str.substr();
console.log(s4, s5, s6);
III. 转换大小写(只能转英文字母)
3.1 大写转成小写 toLowerCase()
var s7 = 'A'.toLocaleLowerCase();
console.log(s7);
3.2 小写转大写 toUpperCase()
var s8 = 'a'.toUpperCase();
console.log(s8);
IV. 获取指定字符在字符串中出现的位置
4.1 indexOf() 获取字符在字符串中首次出现的位置,如果字符串中不包含这个字符,则返回-1
var idx1 = str.indexOf('珠');
console.log(idx1);
4.2 lastIndexOf() 获取字符在字符串中最后一次出现的位置,如果字符串中不包含这个字符,则返回-1
var idx2 = str.indexOf('E');
console.log(idx2);
V. split() 按照指定的分隔符把字符串拆分成数组(数组中的join方法这个相反,join是根据指定的分隔符数组项拼接成字符串)
var str2 = 'I am a Front-end Engineer';
var ary = str2.split(' '); // 根据空格把 str2 拆分成一个数组
console.log(ary);
VI. replace() 字符串替换
var str3 = 'zhufeng培训';
// 5.1 replace(old, new)
var s9 = str3.replace('zhufeng', '珠峰');
console.log(s9);
5.2 replace(old, function () { return new})
var s10 = str3.replace('nihao', function () {
return '你好'
});
console.log(s10);
VII. match() 匹配,如果匹配到,就返回一个数组,如果匹配不到就返回null
var str4 = 'abcdefabcggg';
var ary2 = str4.match('abc');
console.log(ary2);
三、Math对象
Math对象,是浏览器中内置的专门处理数学计算的对象,Math内置了很多的数学方法。
- Math.abs(); 获取绝对值
var m1 = Math.abs(-12.5);
var m2 = Math.abs(12.5);
console.log(m1, m2);
- Math.floor(); 向下取整
var m3 = Math.abs(12.5);
console.log(m3);
- Math.ceil(); 向上取整
var m4 = Math.ceil(12.5);
console.log(m4);
- Math.round() 四舍五入
var m5 = Math.round(2.3);
var m6 = Math.round(3.7);
// 注意:负数是四舍六入
var m7 = Math.round(-2.4);
var m8 = Math.round(-2.6);
console.log(m5, m6, m7, m8);
- Math.random() 生成一个0-1之间的随机小数
var m9 = Math.random();
console.log(m9);
5.2 生成一个n-m之间的随机数
var n, m;
var ran = Math.round(Math.random() * (m - n) + n);
- Math.sqrt(n) 获取的n的算术平方根
var m10 = Math.sqrt(9);
console.log(m10); // 3
- Math.PI 获取圆周率
var pi = Math.PI();
console.log(pi);
console.log(pi.toFixed(2)); //给Math.PI() 保留2位小数; toFixed(x)是number的方法,作用:保留x位小数
二、Date类型
- js中获去日期时间
var date = new Date(); // Date是一个类型,我们通过new操作符获取Date的实例
console.log(date); // 这个date是标准的时间格式
console.log(typeof date); // date实例是一个对象数据类型的值
- Date实例方法 2.1 getFullYear() 获取4位年份,返回4位年份
var year = date.getFullYear();
console.log(year);
2.2 getMonth() 获取月份,返回0-11的数字,0代表1月份,11代表12月份
var month = date.getMonth();
console.log(month);
2.3 getDay() 获取星期几,返回0-6的数字 0代表周日,6代表周六
var weekday = date.getDay();
console.log(weekday);
2.4 getDate() 获取今天是几号 今天几号就返回几
var today = date.getDate();
console.log(today);
2.6 getHours() 获取当前几点的小时数,返回0-23的数字,代表0点到23点
var hour = date.getHours();
console.log(hour);
2.7 getMinutes() 获取当前几点的分钟数,现在是几分就返回几
var min = date.getMinutes();
console.log(min);
2.8 getSeconds() 获取当前几点的秒数,是几秒就返回几
var sec = date.getSeconds();
console.log(sec);
2.9 getMilliseconds() 获取当前时间的毫秒数,是几毫秒就返回几
var mills = date.getMilliseconds();
console.log(mills);
2.10 getTime() 获取时间戳,时间戳是当前时刻距离1970年1月1日0时0分0秒的毫秒数
var timeStamp = date.getTime();
console.log(timeStamp);
Date 格式化时间
时间字符串转时间对象:Date的另一个作用是可以把时间格式的字符串转换为时间对象,转换成时间格式对象后就可以调用getFullYear等方法
var str = '2019-10-10 17:34:23';
var date2 = new Date(str);
console.log(date2);
console.log(typeof date2);
二、定时器
js中的定时器分为两种:
window.setTimeout() 设置一个时间间隔,等到了这个时间间隔执行一次
window.setInterval() 每隔时间间隔执行一次
I 设置定时器 1.1 setTimeout(function() {时间到了要执行的代码}, 时间间隔),返回定时器id
var timer1 = setTimeout(function () {
console.log('2s到了');
}, 2000);
1.2setInterval(function() {时间到了要执行的代码}, 时间间隔),返回定时器id
var timer2 = setInterval(function () {
console.log('一个2s中到了');
}, 2000);
II. 清除定时器:停止定时器办法就是清除定时器
2.1 clearTimeout(定时器id) 清除setTimeout定时器
clearTimeout(timer1);
2.2 clearInterval(定时器id) 清除setInterval定时器
clearInterval(timer2);
三、数组排序算法
4.1 冒泡排序
冒泡排序原理:数组相邻两项直接互相比较,如果前一项比后一项大,就交换两项的位置,否则什么也不做;这样比较一轮过后,可以得出本轮的最大值。
示例:
var ary = [8, 94, 15, 6, 3, 2];
//轮数 i 每一轮比较次数 j
// 0 [8, 15, 6, 3, 2, 94] 5
// 1 [8, 6, 3, 2, 15, 94] 4
// 2 [6, 3, 2, 8, 15, 94] 3
// 3 [3, 2, 6, 8, 15, 94] 2
// 4 [2, 3, 6, 8, 15, 94] 1
// ?比较轮数: ary.length - 1 轮
// ? 每一轮两两比较的次数 ary.length - 1 - i
for (var i = 0; i < ary.length - 1; i++) {
for (var j = 0; j < ary.length - 1 - i; j++) {
if (ary[j] > ary[j + 1]) {
var temp = ary[j];
ary[j] = ary[j + 1];
ary[j + 1] = temp;
}
}
}
console.log(ary);
4.2 快速排序
快速排序的原理:声明两个新数组,分别叫做left(左)和right(右),获取当前数组的中间相,比中间项小的放在left中,比中间项大的放在right。然后对left和right进行同样的操作,直到当前数组只有一项或者为空时,终止这个过程,然后把所有的left和right以及中间相拼接起来。
示例:
var ary = [12,8,88,97,67,56,78,86,85];
// left [12, 8, 56] |67| right [88, 97, 78, 86, 85]
// left [] |8| right [12, 56] |67| left [] |78| right [88, 97, 86, 85]
// left [] |8| left [] |12| right [56] |67|78| left [] |left [85] |86| right [88, 97]
// left [] |8| left [] |12| right [56] |67|78| left [] |left [85] |86| left [] |88| right [97]
// 拼接 [8, 12, 56, 67, 78, 85, 86, 88, 97]
function quickSort(ary) {
// !!!! 使用递归要注意递归终止的条件:当前数组ary只要一项或者为空
if (ary.length <= 1) {
return ary;
}
// 1. 计算中间相索引
var middleIndex = Math.floor(ary.length / 2);
// 2. 获取中间项
var middleVal = ary.splice(middleIndex, 1)[0];
// 3. 声明left和right
var left = [];
var right = [];
// 4. 循环比较数组项和中间项的大小
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
// 用当前项和中间项比较,如果大就push到right,left
if (cur > middleVal) {
right.push(cur);
} else {
left.push(cur);
}
}
return quickSort(left).concat(middleVal, quickSort(right));
}
var sortedAry = quickSort(ary);
console.log(sortedAry);
4.3 插入排序
插入排序原理:
假定第一项是最小值; 从第二项开始,从该项开始和前面的项进行比较 如果前面一项比后一项大,则交换位置
var ary = [5, 4, 3, 2, 1];
function insertSort(ary) {
for (var i = 1; i < ary.length; i++) {
for (var j = i; j > 0; j--) {
if ( ary[j - 1] > ary[j]) {
var temp = ary[j];
ary[j] = ary[j - 1];
ary[j - 1] = temp;
}
}
}
return ary;
}
console.log(insertSort(ary));