内置对象: 不用我们自己创建,js帮我们提供好的一些对象
这些对象是为了方便我们开发使用的。
Math对象:
一个属性 Math.PI: 3.1415xxxx
Math的方法:
- 求最大值和最小值
// 参数: 无数个数字, 返回值:最大的那个数
var result = Math.max(1, -2, 3, 100, 9);
console.log(result);
// 求最小值
var result = Math.min(1, 2, 3, 4, 5);
console.log(result);
2 取整
// Math.ceil() 向上取整 只要有小数,值都取更大的那个数
// Math.floor() 向下取整 取小的那个
// Math.round() 四舍五入 满.5取大的 不满5 取小
console.log( Math.ceil(2.01) );
console.log( Math.ceil(2.99) );
console.log( Math.ceil(-2.1) );
console.log( Math.ceil(-2.9) );
console.log( Math.floor(2.1) );
console.log( Math.floor(2.9) );
console.log( Math.floor(-2.1) );
console.log( Math.floor(-2.9) );
console.log( Math.round(1.5) );// 1
console.log( Math.round(1.8) );// 2
console.log( Math.round(-1.2) );//-1
console.log( Math.round(-1.8) );//-2
3 求绝对值
// Math.abs()
console.log( Math.abs(-5) );
console.log( Math.abs(5) );
4 平方
// Math.pow()
// 2的3次方法
console.log( Math.pow(2, 3) );
// 2的10次方
console.log( Math.pow(2, 10) );
5 开方
// Math.sqrt()
console.log(Math.sqrt(16));
Date对象
Date构造函数 如果需要一个日期的话,需要new Date
// 创建了一个当前的日期
// 1. new Date() 如果不传参数,表示的是当前的时间
// 2. new Date(指定时间) 还可以创建一个指定时间
var date = new Date();
var date1 = new Date('2019-05-05');
console.log(date1);
日期格式化问题:
var date = new Date();
// date.toString();
// date.toLocaleString(); locale: 本地 当地
console.log(date);
console.log(date.toString());
console.log(date.toLocaleString());
希望时间显示成这样: 2019-04-07 14:48:00
var date = new Date();
// 获取年份 date.getFullYear()
var year = date.getFullYear();
console.log(year);
// 获取月份 date.getMonth()
// 注意:月份 0-11 对应1月-12月 月份从0开始记
var month = date.getMonth() + 1;
console.log(month);
// 获取星期 0-6 date.getDay()
// 获取日 1-31 date.getDate()
var day = date.getDate();
console.log(day);
// 小时
var hour = date.getHours();
console.log(hour);
// 分钟
var minute = date.getMinutes();
console.log(minute);
// 秒钟
var second = date.getSeconds();
console.log(second);
// 补0
function addZero(n) {
return n < 10 ? '0' + n : n;
// if (n < 10) {
// return '0' + n;
// } else {
// return n;
// }
}
var str = year + '-' + addZero(month) + '-' + addZero(day) + ' ' + addZero(hour) + ':' + addZero(minute) + ':' + addZero(second);
console.log(str);
时间戳
时间戳是事件的 整数的表现形式
时间戳:1970年1月1日00:00:00 距离现在所过毫秒数
任何一个时间都可以转换成时间戳
时间戳的作用:计算两段时间的时间差
var date = +new Date();
console.log(date);
统计一段代码的执行时间:
var begin = new Date();// 代码开始的时间
var sum = 0;
for(var i = 1; i < 1000000000; i++) {
sum += i;
}
console.log(sum);
var end = new Date(); // 代码执行结束的时间
console.log(end - begin);
倒计时 距离18:30还有多久
var now = new Date();
var off = new Date('2019-05-01 18:30:00');
var time = off - now;
// 把time变成秒钟
time = parseInt(time / 1000);
// 小时
// 1小时 = 60 = 3600
var hour = parseInt(time / 3600);
console.log(hour);
// 只需要显示 不足60的分钟
var minute = parseInt(time/60) % 60;
console.log(minute);
var second = time % 60;
console.log(second);
Array对象
Array是一个构造函数
var arr = new Array();
- arr.join() :
会把数组中的每一项都拼接起来,拼接成一个字符串
参数: 分隔符, 默认是,
返回值:拼接好的字符串
var arr = ['张飞', '赵云', '马超'];
var str = arr.join('');
console.log(str);
-
数组的增删操作
arr.push(): 在数组的最后面增加若干个元素 返回值:数组的新长度
arr.unshift(): 在数组的前面增加若干个元素 返回值:数组的新长度
arr.pop() : 在数组的最后面删除一个元素 返回值:删除掉的那个元素
arr.shift(): 在数组的最前面删除一个元素 返回值:删除掉的那个元素 -
数组的翻转与排序
arr.reverse(); 翻转一个数组
arr.reverse();
console.log(arr);
- 数组的排序
arr.sort(); 数组的排序,数组的排序默认按照字符串的unicode码点进行排序
arr.sort(); 如果不传参数,默认按照字符串的先后顺序
arr.sort() 需要一个参数, 这个参数是一个函数 需要在函数中指定排序的规则
从小到大排
var arr = [1, 3, 5 , 7 ,9, 2 , 4 , 6, 8, 10];
arr.sort(function(a, b){
// 如果这个函数返回的结果 大于0 a和b会换位置
// 如果小于等于 不交换位置
// 如果a > b a-b肯定大于0
// 如果a = b a-b 等于 0 不交换
// 如果a < b a-b 小于0 a还在b前面
return b - a;
});
console.log(arr);
从大到小排
var arr = [1, 5, 11, 33, 9, 1000, 800];
arr.sort(function(a, b) {
return b - a;
});
console.log(arr);
- 数组的拼接与截取
合并
var arr1 = [1, 2, 3];
var arr2 = [4, 5, 6];
// concat: 合并多个数组
// 返回一个合并后的新数组
// 数组1.concat(数组2)
var newArr = arr1.concat(arr2);
console.log(newArr);
截取
// slice: 截取数组的一部分,放到一个新数组中
var arr = ['张飞', '赵云', '马超', '黄忠', '关羽'];
// 参数1: 开始的位置
// 参数2: 结束的位置 不包含结束的这个元素, 参数可以省略,表示截到末尾
var newArr = arr.slice(1, 3);
console.log(newArr);
删除
// splice() 可以在数组的任意地方删除元素或者增加元素, 返回值:删除掉的元素的数组
var arr = ['张飞', '赵云', '马超', '黄忠', '关羽'];
// 参数1: 开始的位置
// 参数2: 删除几个
// 参数3: 要增加哪些元素
// var newArr = arr.splice(1, 1, '黄月英', '大乔');
// console.log(newArr);
// console.log(arr);
// arr.splice(2, 1);
// console.log(arr);
arr.splice(2, 0, '马云');
console.log(arr);
- 数组的查找元素
var arr = [1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1];
// arr.indexOf(值) 获取值在数组中第一次出现的位置
// arr.lastIndexOf(值) 从后面开始查找,查找值在数组中第一次出现的位置
// 如果数组中没有这个元素, 会返回-1
console.log(arr.indexOf(8));
console.log(arr.lastIndexOf(4));
indexOf 可以判断数组中是否包含某个值
- 数组的统计次数的说明
var arr = ["c", "a", "z", "a", "x", "a", "a", "z", "c", "x", "a", "x"];
// 思路:
// 1. 空的对象 表示所有的字符都没有出现过
// 2. 遍历这个数组
// 3. 判断arr[i]在对象中是否存在 如果不存在, 让obj[ arr[i] ] = 1
// 如果存在, obj[ arr[i] ]++
var obj = {};
for (var i = 0; i < arr.length; i++) {
if (obj[arr[i]] === undefined) {
// 不存在
obj[arr[i]] = 1
} else {
obj[arr[i]]++;
}
}
console.log(obj);
基本包装类型
简单类型没有属性和方法,只有一个值,所以才叫简单
js为了我们使用简单类型方便, 每个每一个简单类型 number string boolean分别提供了对应的复杂类型。
当我们调用简单类型的属性和方法的时候。js内部会自动把简单类型给你变成复杂类型。结束后,再把复杂类型变回了简单类型,这个过程对于我们是透明的。
Number String Boolean
- Number对象
//toFixed(2)//保留2位小数
//toString();//转换成字符串
var num = 10;
console.log(num1.toFixed(2));
var num1 = 0.1 + 0.2;
console.log(num.toString());
- Boolean对象
var b = new Boolean(true);
console.log(b.toString());
undefined和null没有包装类型,所以调用toString方法会报错
- String对象
字符串可以看成是一个字符数组(伪数组)。因此字符串也有长度,也可以进行遍历。String对象很多方法的名字和和Array的一样。可以少记很多的单词。
1 查找指定字符串
//indexOf:获取某个字符串第一次出现的位置,如果没有,返回-1
//lastIndexOf:从后面开始查找第一次出现的位置。如果没有,返回-1
var str = '我爱中华人民共和国';
var index = str.indexOf('中华');
2 去除空白
// trim();//去除字符串两边的空格,内部空格不会去除
var str2 = ' chen lao shi ';
console.log(str2.trim());
3 大小写转换
//toUpperCase:全部转换成大写字母
//toLowerCase:全部转换成小写字母
4 字符串拼接与截取
//字符串拼接
//可以用concat,用法与数组一样,但是字符串拼串我们一般都用+
//字符串截取的方法有很多,记得越多,越混乱,因此就记好用的就行
//slice :从start开始,end结束,并且取不到end。
//substring :从start开始,end结束,并且取不到end
//substr : :从start开始,截取length个字符。
5 字符串切割
//split:将字符串分割成数组(很常用)
//功能和数组的join正好相反。
var str = "张三,李四,王五";
var arr = str.split(",");
6 字符串替换
replace(searchValue, replaceValue)
//参数:searchValue:需要替换的值 replaceValue:用来替换的值
练习
//1. 截取字符串"我爱中华人民共和国",中的"中华"
var str = '我爱中华人民共和国';
var index = str.indexOf('中华');
var result = str.substr(index, 2);
console.log(result);
//2. "abcoefoxyozzopp"查找字符串中所有o出现的位置
var str1 = 'abcoefoxyozzopp';
for(var i = 0; i < str1.length; i++){
if(str1[i] === 'o'){
console.log(i);
}
}
//3. 把字符串中所有的o替换成!
var result = str1.replace(/o/g, '!');
console.log(result);
console.log(str1);
//4. 把一个字符串中所有的空格全部去掉
var str2 = ' chen lao shi ';
console.log(str2.trim());
console.log(str2);
console.log(str2.replace(/ /g, ''));
//5. 统计一个字符串中每个字符出现的次数
var obj = {};
for(var j = 0; j < str1.length; j++){
if(obj[str1[j]]){
obj[str1[j]]++;
} else {
obj[str1[j]] = 1;
}
}
console.log(obj);