JavaScript笔记整理4 -- JS基础概念之复合数据类型( 数组与对象)
数组
:一组数据有序的集合,它属于符合数据类型,至少可以存储一个数。
概念
数组元素
:数组的每一个数据。
- 访问数组中指定的元素,要通过下标来访问;
格式:数组变量名[
下标]
数组下标(索引)
:每一个元素都对应着一个数组下标,数组下标由0开始第一个数组元素的下标识0,第二个是1,第三个是2,以此类推。
数组其实也是对象,对象由属性和方法组成,下面介绍一个数组中常用的方法,获取数组的长度。
数组长度length
格式:数组变量名.length
- 获取的值是整数类型。
定义数组
显式创建数组
:使用new关键字和Array()方法定义数组。
同样具备两种方法:
- 直接定义数组后赋值
格式:var
数组变量名= new Array("
数组元素1","
数组元素2","
数组元素3");
- 定义空数组再通过下标添加元素
定义数组的两种方式(推荐第一种):
1)创建空数组 格式:var
数组变量名=new Array();
2)创建指定长度的数组 格式:var
数组变量名=new Arryay(
数组长度);
赋值:
arr[0]="数组元素1";
arr[1]="数组元素2";
arr[2]="数组元素3";
隐式创建数组
:使用[]定义数组。
有两种方法如下:
- 直接定义并添加数组元素
格式:var
数组变量名=["
数组元素1","
数组元素2","
数组元素3"];
- 定义空数组再通过下标添加元素
格式例子:
var arr=[];
arr[0]="数组元素1";
arr[1]="数组元素2";
arr[2]="数组元素3";
//此处如果再添加 arr[99]="新元素";
//数组的长度将为100。
注意:工作中一般都是用[]创建数组,基本不使用new关键字和Array数组方法来创建。
一维数组
:一个数组内所有的元素数据类型都不是数组类型,就是一维数组。
多维数组
:超过一维数组的都可以叫多维,多维数组指的是一个数组中的元素又是一个数组。
定义二维数组
格式例子:
var arr=[
"数组元素1",
"数组元素2",
["二维数组元素1","二维数组元素2","二维数组元素3"]
];
访问多维数组的元素
格式:数组变量名[
一维数组的下标][
二维数组的下标]
二维数组的长度
length获取的是当前数组的一维长度,例如上面例子的长度为3。
数组的遍历
:操作数组中的每一个数组元素。
使用for…in语句遍历
- for…in语句本身是用来遍历对象的
格式:
for(var 变量名 in 数组变量名){
数组变量名[变量名];
}
使用for循环遍历
遍历:
for(var i=0;i<数组变量名.length;i++){
数组变量名[i];
}
- 这段代码可进行优化,如下:
var 数组长度变量名=数组变量名.length;
for(var i=0;i<数组长度变量名;i++){
数组变量名[i];
}
==注意==:一般情况下使用for循环来遍历数组,因为使用for循环遍历数组非常直观。 ## 遍历二维数组 理解:**行数**是这个**二维数组**的长度,**列数**是这个二维数组下的**一维数组**的长度决定。
遍历:
var 行数变量名=二维数组变量名.length;
for(var i=0;i<二维数组长度变量名;i++){
var 列数变量名=二维数组变量名[i].length;
for(var j=0;j<列数变量名;j++){
二维数组变量名[i][j];
}
}
对象
概念
对象是由属性和方法组成的。
在JavaScript中一切皆是对象。
对象的分类
对象分为 :自定义对象 , 内置对象 和 浏览器对象。
创建自定义对象
下面介绍两种创建方法。
1.使用new关键字和Object()方法创建自定义对象
使用:先创建空对象,再添加属性和方法。
举例:
var obj=new Object();
obj.username="张三";
obj.sex="男";
obj.age="20";
obj.showInfo=function(){
var str="姓名:"+this.username+" 性别:"+this.sex+" 年龄:"+this.age;
return str;
}
理解:new Object
创建空对象,并给其赋值变量obj,并给对象添加属性和方法。
this
一般是在匿名函数中使用,它是代表当前对象,哪个对象来调用当前的匿名函数,这个this
就会指向那个对象。
2.使用{}创建自定义对象
格式:
var 变量名={};
//用.设置属性;
或 JSON格式,如下
var 变量名={
属性名:值,
属性名:值,
方法名:匿名函数
};
- 创建方式和JSON创建对象极其相似。
- 缺点:只能创建一次性对象(只能在源码上进行修改)。
访问属性
.
访问- 对象名
["
属性名"]
– 可用于变量访问对象。
内置对象
分类:
- String对象:提供了处理字符串的属性和方法
- Array对象:提供了一些操作数组的属性和方法
- Math对象:提供了一些操作数学方面的方法
- Date对象:提供了一些对时间日期操作的方法
- Number对象:主要提供了操作数值的方法
- Event对象:提供对JavaScript事件的处理信息
String对象
创建String对象
两种方法:
- 定义的字符串变量名其实就是一个字符串对象
格式:var
变量名='
字符串内容';
- 使用new关键字和String()方法来创建
格式:var
变量名=new String("
字符串内容");
String对象的常用属性
StringObject.length
功能:返回字符串对象的长度。(这里指字符的个数)
- 凡是在描述字符串长度时,通常有两种说法:
1.该字符串的字符个数
2.该字符串在内存中所占的位置
String对象的常用方法
StringObject.charAt(index)
- index:指定的下标值
功能:返回一个指定下标的字符。
- 访问指定下标的对象有两种方法:
1.StringObject.charAt(index)
2.StringObject[index]
StringObject.indexOf(substr)
功能:查找substr这个字符串或者是字符在StringObject这个对象中首次出现的位置,如果能找到则返回对应下标,否则返回-1 。
- 查找的是字符串时,如果能找到,返回的是字符串首字母的下标。
StringObject.LIndexOf(substr)
功能:查找substr这个字符串或者是字符在StringObjec这个对象中最后出现的位置,如果能找到则返回对应下标,否则返回-1 。
- 查找的是字符串时,如果能找到,返回的是字符串首字母的下标。
StringObject.substr(startIndex[,Length])
- startIndex:开始下标
- Length:可缺省的,表示的是截取的长度
功能:截取字符串,从开始下标startIndex处开始截取Length长度的字符串,Length不可不写,表示取到原字符串末尾。
StringObject.split(sep)
- sep:指定的分隔符个
功能:使用指定的分隔符将一个字符串分割为数组。
- 最终得到的是一个数组;
StringObject.replace(reg,str)
- reg:规定了要替换的模式的RegExp对象
- str:被替换的内容
功能:使用str参数里面的内容替换reg的第一次匹配或所有匹配之后得到的内容。
Array对象
创建Array对象
两种方法:
- 使用[]创建
格式:var
变量名=[
数组元素1,
数组元素2,
数组元素3];
- 使用new关键字和Array()方法来创建
格式:var
变量名=new Array(
数组元素1,
数组元素2,
数组元素3);
Array对象的常用属性
ArrayObject.length
功能:返回数组的长度。(这里指数组元素的个数)
Array对象的常用方法
ArrayObject.push(数组元素1,数组元素2…)
功能:向数组的末尾添加一个或者多个数组元素,并返回添加后的数组长度。
ArrayObject.pop()
功能:将数组的最后一个元素删除,并返回删除的该元素。
ArrayObject.shift()
功能:将数组的第一个元素删除,并返回删除的该元素。
ArrayObject.unshift(数组元素1,数组元素2…)
功能:向数组的开头添加一个或者多个数组元素,并返回添加后的数组长度。
ArrayObject.concat(数组名)
功能:连接一个或更多的数组,并返回数组结果。
ArrayObject.reverse()
功能:将数组元素倒置,并返回数组结果。
ArrayObject.join([sep])
功能:将数组用sep字符合并为字符串,如果sep为空,默认为英文逗号,
。
ArrayObject.sort(fn)
功能:将数组进行排序(升序/降序),返回排序后数组。
fn函数内容 :
function fn(a,b){
//升序
return a-b;
}
function fn(a,b){
//降序
return b-a;
}
Date对象
创建Date对象
方法: 使用new关键字和Array()方法来创建
创建的类型:
- 带参数:获取指定的时间日期对象
格式:var
变量名=new Date("
年/
月/
日 时:
分:
秒");
- 不带参数:系统当前的时间日期对象
格式:var
变量名=new Date();
- Date对象没有属性,只有方法。
Date对象的常用方法
DateObject.getFullYear()
功能:返回四位数的年份。
DateObject.getMonth()
功能:获取月份,返回0-11 。
- 一月(0)-十二月(11)
DateObject.getDate()
功能:获取日期,返回1-31 。
DateObject.getHours()
功能:获取小时,返回0-23 。
DateObject.getMinutes()
功能:获取分钟,返回0-59 。
DateObject.getSeconds()
功能:获取秒,返回0-59 。
DateObject.getMilliseconds()
功能:获取毫秒,返回0-999 。
DateObject.getDay()
功能:获取星期,返回0-6 。
- 0表示星期日,其他对应星期相同。
DateObject.getTime()
功能:代表时间戳,获取从1970年1月1日0时0分0秒到该日期的毫秒数。
DateObject.toLocalDateString()
功能:将时间日期对象转换为本地日期(年月日),返回字符串。
DateObject.toLocalTimeString()
功能:将时间日期对象转换为本地时间(时分秒),返回字符串。
Math对象
注意:
Math对象不需要创建,直接使用即可。
Math关键字就是对象名。
Math对象的常用属性
Math.PI
功能:返回圆周率。
Math对象的常用方法
Math.abs(x)
- x表示数字
功能:返回x的绝对值。
Math.pow(x,n)
功能:返回x的n次幂。
Math.sqrt(x)
功能:返回x的平方根。
Math.max(x,y,z,…)
功能:返回列表中的最大值。
Math.min(x,y,z,…)
功能:返回列表中的最小值。
Math.ceil(x)
功能:向上取整,返回比当前数要大的最小整数。
Math.floor(x)
功能:向上取整,返回比当前数要小的最大整数。
Math.round(x)
功能:不保留小数位的四舍五入,返回x四舍五入后的结果。
Math.random()
功能:返回 [0-1) 之间的一个随机数。
- 包含0,不包含1
可以通过给这些数相乘的到相应随机数。
Number对象
Number对象的常用方法
Number.toFixed(n)
功能:将一个数字进行保留n位小数,需要进行四舍五入。