内置对象
定义:是指JS语言自带的一些对象,这些对象供开发者使用,并且提供了一些常用的或者是最基本而且必要的功能
常用的内置对象:Math、Date…
查阅文档:MDN
Math对象
Math数学对象,不是一个构造函数,所以我们不需要new
来调用而是直接使用里面的属性和方法
代码:
var math = {
PI: 3.1415926,
Max: function(){
var max = arguments[0];
for(var i = 1; i < arguments.length; i++){
if(arguments[i] > max){
max = arguments[i];
}
}
return max;
},
Min: function(){
var min = arguments[0];
for(var i = 1; i < arguments.length; i++){
if(arguments[i] < min){
min = arguments[i];
}
}
return min;
}
}
console.log(math.PI);
console.log(math.Max(1,2));
console.log(math.Min(10,10));
其他常用成员:
Math.PI // 圆周率
Math.floor() // 向下取整
Math.ceil() // 向上取整
Math.round() // 四舍五入版就近取整 注意 -3.5 结果为 -3
Math.abs() // 绝对值
Math.max() / Math.min() //求最大和最小
随机数方法 : Math.random()
返回一个随机小数[ 0 , 1 )
,不跟参数
案例:猜数字游戏
function getRandom(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var random = getRandom(1,10);
while(true){
var num = prompt('猜一下数字是多少(1-10)');
if(num > random) {
alert('数字大了');
}
else if(num < random){
alert('数字小了');
}
else{
alert('你猜对了');
break; // 退出整个循环,程序结束。
}
}
日期对象
是一个构造函数,不许使用new
来创建日期对象
var arr = new Array(); // 创建一个数组对象
var obj = new Object(); // 创建一个对象实例
//1、Date的使用,如果没有参数,返回当前系统的当前时间
var date = new Date();
console.log(date);
//2、参数常用的写法 数字型 2019,10,01 或者是 字符串型 ‘2019-10-1 8:8:8’
var date1 = new Date(2019,10,1)
console.log(date1); // 返回的是 11月 不是 10月
var date1 = new Date('2019-10-1 8:8:8')
console.log(date2);
//2、格式化日期 年月日
var date = new Date();
console.log(date.getFullYear()); // 返回当前日期的年
console.log(date.getFullMonth() + 1); // 返回当前日期的月
/*写星期几的要用中文的的话 可以用数组将周一到周日写进去*/
//3、格式化日期 时分秒
function getTime(){
var time = new Date();
var hours = time.getHours();
hours = hours < 10 ? '0' + hours : hours;
var minutes = time.getMinutes();
minutes = minutes < 10 ? '0' + minutes : minutes;
var seconds = time.getSeconds();
seconds = seconds < 10 ? '0' + seconds : seconds;
return hours + ':' + m + ':' + s;
}
//获得Date总的毫秒数
var date = new Date();
console.log(date.valueOf());
var date1 = +new Date(); // 返回的就是总的毫秒数
console.log(Date.now()); // H5新增方法 毫秒数用来作为时间戳
案例:倒计时
// 1、算法核心:输入时间减去现在的时间就是剩余的时间,即倒计时,但是不能拿着时分秒详见,比如05分减去25分,结果就是负数。
// 2、用时间戳来做
// 3、把剩余时间总的毫秒数转换为天、时、分、秒
function countDown(time){
var nowTime = +new Date(); // 返回的时当前时间总的毫秒数
var inputTime = +new Date(time); // 返回的时用户输入时间的总的毫秒数
var times = (inputTime - nowTime) / 1000;
var d = parseInt(times / 60 / 60 / 24); // 计算天数
var h = parseInt(times / 60 / 60 % 24); // 计算小时
var m = parseInt(times / 60 % 60); // 计算分钟
var s = parseInt(times % 60); //计算秒数
d = d < 10 ? '0' + d : d;
h = h < 10 ? '0' + h : h;
m = m < 10 ? '0' + m : m;
s = s < 10 ? '0' + s : s;
return d + ' 天 ' + h + ' 小时 ' + m + ' 分 ' + s + '秒';
}
console.log(countDown('2020-3-4 00:00:00'));
数组对象
var arr = new Array(2); // 创建一个空的数组 2表示数组长度为2
var arr1 = new Array(2,3); // 等价于[2,3],表示两个数组元素2,3
- 检验数组是否为数组
1、运算符instanceof
检测是否为数组
2、方法Array.isArray()
function reverse(arr){
if (arr instanceof Array){ // Array.isArray()也是有相同作用
var newArray = [];
for(var i = arr.length - 1; i >= 0; i--){
newArray[newArray.length] = arr[i];
}
return newArray;
}else{
return 'error 这个参数必须是格式xxxx'
}
- 添加删除数组元素的方法
// 有一个包含工资的数组[1500,1200,2100,1800],要求把数组中的工资超过两百的删除,剩余的放到新数组里面
var arr = [1500,1200,2100,1800];
var newArray = [];
for(var i = 0; i < arr.length; i++){
if(arr[i] < 2000){
newArray.push(arr[i]);
}
}
console.log(newArray);
- 翻转数组
数组.reverse()
- 数组排序
数组.sort()
但是这个方法只能排序个位数的数组,完美写法如下:
var arr = [1,14,5,89,13];
arr.sort(function(a,b){
return a - b; // 升序顺序排列 降序为 return b - a
});
console.log(arr);
- 获取数组索引号:
数组.indexOf('元素')
和数组.lastIndexOf('元素')
返回数组元素索引号
var arr = [1,14,5,89,13];
console.log(arr.indexOf('14')); // 返回 1 如果找不到14这个元素返回 -1
console.log(arr.lastIndexOf('14')); // 返回 1 如果找不到14这个元素返回 -1 (从后往前找)
// 有一个数组 ['c','a','z','a','x','a','x','c','b'],要求去除数组中的元素
// 核心算法:遍历数组,然后拿着就数组查询新数组,如果该数组再欣的数组里面没有出现过,就添加否则不添加。
function reMove(arr){
var newArr = [];
for(var i = 0; i < arr.length; i++ ){
if(newArr.indexOf(arr[i]) === -1){
newArr.push(arr[i]);
}
}
return newArr;
}
var arr1 = ['c','a','z','a','x','a','x','c','b'];
arr1 = reMove(arr1);
console.log(arr1);
//返回 ["c", "a", "z", "x", "b"]
- 数组转化成字符串 数组.join(‘分隔符’);
var arr = [1,14,5,89,13];
console.log(arr.join('-'));
//返回 1-14-5-89-13
- 其他
字符串对象
引入
- 根据字符返回位置
var str = '我在进行JS学习,你在干什么';
console.log(str.indexOf('在')); // 返回 1
console.log(str.indexOf('在',3)); // 返回 10
// 查找字符串 'abcoefoxyozzopp' 出现的位置以及次数。
// 核心算法 1、先查找第一个o出现的位置
// 2、然后只要indexOf返回的结果不是 -1 就继续往后查找
// 3、因为indexOf只查早第一个,然后后面的查找,利用第二个参数,当前索引加 1
// 从而继续你查找
var str = 'abcoefoxyozzopp';
var index = str.indexOf('o');
var num = 0;
while(index !== -1){
console.log(index);
index = str.indexOf('o', index + 1);
num ++;
}
console.log(num);
- 根据根据位置返回字符
// 查找字符串 'abcoefoxyozzopp' 出现最多的字符以及统计次数。
// 核心算法 1、利用charArt()遍历整个字符串
// 2、把每个字符存储给对象,如果对象没有该属性,就为1,如果存在了就 +1
// 3、遍历对象,得到最大值和该字符
var str = 'abcoefoxyozzopp';
var o = {};
var max = 0;
var char = '';
for(var i = 0; i < str.length; i++){
var chars = str.charAt(i);
if(o[chars]){
o[chars]++; // 如果有个属性并且已经存储了值,则 +1
}else{
o[chars] = 1; // 如果没有这个属性就让这个属性的值为 1
}
}
console.log(o);
for(var j in o){
if(o[j] > max){
max = o[j];
ch = j;
}
}
console.log(max);
console.log('出现最多的字符是: ' + ch);
- 字符串操作方法
var str = '我在学习JS';
console.log(str.substr(2,4)); // 输出: 学习JS
var str1 = 'abcoefoxyozzopp';
while(str1.indexOf('o') !== -1){
str1 = str1.replace('o','*');
}
console.log(str1);