Date日期对象的使用
Date()日期对象﹑是一个构造函数,必须使用new来调用创建我们的日期对象
var arr = new Array();//创建一个数组对象
一,使用Date
如果没有参数返回当前系统的当前时间
var date = new Date();
二,参数常用的写法:
- 数字型 2019,10,01
var date1 = new Date(2019,10,1);
返回的是11月不是10月
- 字符串型’2019-10-1 8:8:8’
var date2 = new Date( '2019-10-1 8:8:8');
date1和date2对比,字符串型更常用,因为数字型返回的月份会小一个月,不准确
三,格式化日期
数组对象的使用
一,创建数组的两种方法:
1.利用数组字面量:var arr =[1,2,3];
2.利用new Array():
var arr = new Array(2);
数组的长度是2
var arr = new Array(2,3);
数组有两个元素
二,检测是否为数组的两种方法
(1)instanceof
运算符它可以用来检测是否为数组
var arr =[];
var obj = {};
console.log(arr instanceof Array);
console.log(obj instanceof Array);
(2)Array.isArray(参数)
console.log(Array.isArray(arr));
console.log(Array.isArray(obj));
三,添加删除数组元素的方法:
1.push
:
在数组末尾添加元素
var arr =[1500,1200,2000,2100,1800];
var newArr =[];
for (var i =e; i < arr.length; i++) i
if (arr[i]< 2000) {
newArr.push(arr[i]);
}
}
2.unshift
:
在数组前面添加元素
arr.unshift('red');
3. pop
删除数组的最后一个元素(只能一个),并返回被删除的元素
arr.pop();
返回值:
4.shift
删除数组的第一个元素(只能一个),并返回被删除的元素
arr.shift();
四,数组排序的两种方法
1.reverse()
:
var arr =[ "pink " , 'red ', 'blue'];
arr.reverse();
2.sort()
:(冒泡排序)
var arr1 =[13,4,77,1,7];
arr1.sort(function(a,b){
return a - b;//升序的顺序排列
return b - a; //降序序的顺序排列
});
升序的顺序排列: a - b;
降序的顺序排列: b - a;
五,数组的索引方法:
1.indexOf
():
可返回某个指定的字符串值在字符串中首次出现的位置。
如果要检索的字符串值没有出现,则该方法返回 -1。
其中,写成indexOf("s",3)
的3是指返回从3开始找到的"s"
例子:
查找字符串"abcoefoxyozzopp"中所有o出现的位置以及次数
核心算法:
先查找第一个o出现的位置,然后只要indexOf 返回的结果不是-1就继续往后查找,因为indexOf 只能查找到第一个,所以后面的查找,一定是当前索引加1,从而继续查找
var str = "oabcoefoxyozzopp";
var index = str.indexof( "o");
var num = e;
while (index !== -1){
console.log(index);
num++;
index = str.indexOf("o" , index + 1);
console.log( 'o出现的次数是:' + num);
}
2.lastIndexOf
():与上面类似,但从后面开始返回
案例:
封装一个去重的函数unique独一无二的function
unique(arr) {
var newArr = [];
for (var i = e; i < arr.length; i++)i
if (newArr.indexof(arr[i])=== -1) {
newArr.push(arr[i]);
}
}
return newArr;
}
var demo = unide([ 'c', "a ', 'z', 'a', "x ', 'a', 'x ', 'c','b'])
**
六,数组转换为字符串
1.toString
():转换为字符串
var arr =[1,2,3];
console.log(arr.tostring());
2.join
():join(分隔符)
var arr1 = [ ' green ', "blue " , "pink" ];
console.log(arr1.join()); //输出 green,blue,pink
七,其他
方法名 | 说明 | 返回值 |
---|---|---|
concat() | 连接两个或多个数组不影响原数组 | 返回一个新的数组 |
slice) | 数组截取slice(begin, end) | 返回被截取项目的新数组 |
splice() | 数组删除splice(第几个开始,要删除个数) | 返回被蒯除项目的新数组注意,这个会影响原数组 |
字符串对象
一,基本包装类型
为了方便操作基本数据类型,JavaScript还提供了三个特殊的引用类型;String、Nurmber和Boolean。
基本包装类型就是把简单数掘类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法,
下面代码有什么问题?
var str = ' andy ' ;
console.log(str.length) ;
按道理基本数据类型是没有属性和方法的,而对象才有属性和方法,但上面代码却可以执行,这是因为js 会把基本数据类型包装为复杂数据类型,其执行过程如下:
1.生成临时变量,把简单类型包装为复杂数据类型
var temp= new String ( ’ andy ’ ) ;
1/2赋值给我们声明的字符变量
str =temp ;
1/3.销毁临时变量
temp = null;
二,根据位置返回字符
方法名 | 说明 | 使用 |
---|---|---|
charAt(index) | 返回指定位置的字符(index字符串的索引号) | str.charAt(O) |
charCodeAt(index) | 获取指定位置处字符的ASCII码(index索引号) | str.charCodeAt(O) |
str[index] | 获取指定位置处字符 | HTML5,IE8+支持和charAt()等效 |
例子:
判断一个字符串’abcoefoxyozzopp’中出现次数最多的字符,并统计其次数。
核心算法:
利用charAt()遍历这个字符串,把每个字符都存储给对象,如果对象没有该属性,就为1,如果存在了就+1。遍历对象,得到最大值和该字符
var str = 'abcoefoxyozzopp ';
var o= {};
for (var i = e; i < str.length; i++) {
var chars = str.charAt(i); // chars是字符串的每一个字符
if (o[chars])i // o[chars],得到的是属性值
o[chars]++;
}else {
o[chars] = 1;
}
}
console.log(o);
输出:
三.字符串操作方法:
方法名 | 说明 |
---|---|
concat(str1,str2,str3…) | concat()方法用于连接两个或多个字符串。拼接字符串,等效于+,+更常用 |
substr(start,length) | 从start位置开始(索引停y , length 取的个数重点记住这个 |
slice(start, end) | 从start位置开始。截取到end位置,end取不到(他们俩都是索引号) |
substring(start, end) | 从start位置开始。截取到end位置,end取不到基本和slice相同但是不接受负值 |
1.concat
('字符串1",'字符串2…)
var str = "andy " ;
console.log(str.concat( 'red '));
输出:andyred
2.substr
(·截取的起始位置’,“截取几个字符”);
var str1 ="改革春风吹满地";
console.log(str1.substr(2, 2));
第一个2是索引号的2从第几个开始﹐第二个2是取几个字符
输出:春风
3.replace
( ‘被替换的字符’,‘替换为的字符’)它只会替换第一个字符
例子:
有一个字符串 'abcoefoxyozzopp’要求把里面所有的 ○ 替换为 *
var str1 = 'abcoefoxyozzopp';
while (str1.indexof( "o')!== -1){
str1 = str1.replace( 'o', "*');}
}
console.log(str1);
4.split
("分隔符’)
对比join把数组转换为字符串,split是字符转换为数组
var str3 = "red&pink&blue " ;
console.log(str3.split( '&"));
输出:
[ “red”, " pink “,” blue"]