js内置对象笔记
1.Date对象
注意:Date()是构造函数 必须使用new来实例化日期对象
- 没有参数,返回系统当前时间
var Date = new Date();
- 有参数
var date1 = new Date(2020,3,9);//数字型
console.log(date1);//返回4月 不是3月
var date2 = new Date('2020-3-9');//字符串型
格式化日期年月日分秒
var date = new Date();
console.log(date.getFullYear());//返回当前时间 年
console.log(date.getMonth()); //返回的月份小一个月(0-11)
console.log(date.getDate());//返回几号
console.log(date.getDay());//返回周几 (周日0到周六6)
console.log(date.getHours());//时
console.log(date.getMinutes());//分
console.log(date.getSeconds());//秒
获取总的毫秒(时间戳)
距离1970年1月1号过了多少毫秒数
1.valueOf()
2.getTime()
3.
var date = +new Date();//+new Date() 返回总的毫秒数
4.H5新增
console.log(Date.now());
案例倒计时
function countDown(time){
var nowTime = +new Date();
var inputTime = +new Date(time);
var times = (no![在这里插入图片描述](https://img-blog.csdnimg.cn/20200309221514352.JPG)wTime-inputTime)/1000;//总的秒数
var d = parseInt(times/60/60/24);//天
d = d < 10 ? '0' + d : d;
var h = parseInt(times/60/60%24);//时
h = h < 10 ? '0' + h : h;
var m = parseInt(times/60%60);//分
m = m < 10 ? '0' + m : m;
var s = parseInt(times%60);//秒
s = s < 10 ? '0' + s : s;
return d+'天'+h+"时"+m+"分"+s+"秒";
}
var date = new Date();
console.log("现在的时间"+date);
console.log(countDown('2020-1-1 00:00:00' ));
运行截图
2.数组对象
创建数组
1.利用数组字面量
2.利用new Array()
检测是否为数组
1.instanceof 运算符
var arr = [];
console.log(arr instanceof Array);//返回true
2.Array.isArray(参数);//H5新增 ie9以上版本
添加删除数组方法
1.push() 在数组的末尾添加一个或多个数组元素
var arr = [1,2,3];
//arr.push(4,'hello');
console.log(arr.push(4,'hello'));//返回新数组长度
console.log(arr);
2.unshift()在数组开头添加一个或多个数组元素
3.pop()删除数组的最后一个元素
var arr = [1,2,3];
//arr.pop();
console.log(arr.pop());//返回删除的元素值3
4.shift()删除数组的第一个元素,素组长度-1,返回第一个元素值
数组排序
1.翻转数组reverse()
2.数组排序sort()
var arr = [2,54,32,1,42,21,11];
console.log(arr.reverse());
console.log(arr.sort());//[1,11,2,21,32,42,54]
arr.sort(function(a,b){
return a-b;//升序
//return b-a;//降序
});
console.log(arr);//[1,2,11,21,32,42,54]
数组索引
1.indexOf() 数组中查找给定数组的第一个索引
2.lastIndexOf() 在数组中的最后一个索引
var arr = [1,2,3,4,5,2];
console.log(arr.indexOf(2));//只返回第一个满足条件的索引号1,不存在的话返回-1
console.log(arr.lastIndexOf(2));//返回5
数组去重案例(重点)
题目有一个数组[‘c’,‘a’,'z,‘a’,‘x’,‘a’,‘x’,‘c’,‘b’],要求去除数组中重复的元素
function unique(arr){
var newArr = [];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])===-1){
newArr[newArr.length] = arr[i];
}
}
console.log(newArr);//['c','a','z','x','b']
}
unique(['c','a','z','a','x','a','x','c','b']);
数组转换为字符串
1.toString()
2.join(‘分隔符’)
concat,slice,splice
- concat() 连接两个或多个数组,返回一个新数组,不影响原数组
- slice() 数组截取slice(begin,end),返回截取的新数组,不影响原数组
var arr = [1,2,3,4,5];
console.log(arr.slice(1,3));//[2,3] 不包括end
- splice 数组删除splice(第几个开始,删除几个) 返回被删除的新数组,会影响原数组
补充:
splice插入替换
//替换
var arr = [1,2,3,4,5];
console.log(arr.splice(1,0,7,8));//[]
console.log(arr);//[1,7,8,2,3,4,5]
//删除
var arr = [1,2,3,4,5];
console.log(arr.splice(1,3,7,8));//[2,3,4]
console.log(arr);//[1,7,8,5]
3.字符串对象
基本包装类型
var str = 'hello';
console.log(str.length); //5
对象才有属性的方法 复杂数据类型也有属性和方法
简单数据类型:Number,String,Boolean,undefined,null
复杂数据类型:数组,函数,对象
简单数据类型为什么会有length属性?
基本包装类型 :把简单数据类型包装成复杂数据类型
//(1)生成临时变量,把简单数据类型包装为复杂数据类型
var temp = new String('andy');
//(2)把临时变量的值给str
str = temp;
//(3)销毁临时变量
temp = null;
字符串不可变
含义:指的里面的值不可变。看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间
var str = 'a';
console.log(str);//a
str = 'b'
console.log(str);//b
根据字符返回位置
字符串所有方法,都不会修改字符串本身,操作完成都会返回一个新的字符串
1.indexOf()
2.lastIndexOf()
var str = '这是一个字符串,字符串';
console.log(str.indexOf('字'));//4
console.log(str.indexOf('字',5));//8 从索引号5的位置往后找
案例返回字符串位置
查找字符串“abcoefoxyozzopp”中所有的o出现的位置以及次数
var num = 0;
var str = "abcoefoxyozzopp";
var index = str.indexOf('o');
while(index !==-1){
console.log(index);
index = str.indexOf('o',index+1)
num++;
}
console.log(num);
根据位置返回字符串(重点)
1.charAt(index) 返回指定位置的字符
2.cahrCodeAt(index)获取指定位置处字符的ASCII码
3.str[index]获取指定位置处字符 H5新增
案例:返回字符位置
判断字符串“abcoefoxyozzopp”中出现次数最多的字符,并统计其次数
var str = "abcoefoxyozzopp";
var a = {};
for(var i = 0;i<str.length;i++){
var char = str.charAt(i);
if(a[char]){
a[char]++;
}else{
a[char] = 1;
}
}
console.log(a);
var max = 0;
var ch = '';
for(var k in a){
if(a[k] > max){
max = a[k];
ch = k;
}
}
console.log(max);
console.log(ch);
字符串操作方法(重点)
1.concat(str1,str2,str3…) 连接两个或多个字符串。拼接字符串。等效于+
2.substr(start,length) 从start位置开始(索引号),length取的个数
3.slice(start,end) 从start位置,截取end位置,end取不到
4.substring(start,end) 从start位置开始,截取到end位置,end取不到
替换字符串以及转换为数组
replace(‘被替换的字符’,‘替换为的字符’)
split(‘分隔符’) 字符转换为数组
简单数据类型与复杂数据类型
简单数据类型:Number,String,Boolean,undefined,null
复杂数据类型:数组,函数,对象
简单数据类型null 返回一个空对象 object
堆和栈
简单数据类型存放在栈里面
复杂数据类型存放在堆里面:首先在栈里面存放地址 十六进制表示 ,这个地址指向堆里面的数据
上一篇: 详解jvm中的标量替换