索引数组 :
内存中连续存储多个数据的数据结构,再起一个统一的名字
为什么:普通的变量只能存储一个数据程序
=数据结构+算法算法: 解决问题的步骤数据结构: 数据在内存中的存储结构好的数据结构可以极大的提高程序的执行效率
何时:只要存储多个连续的数据
1、创建空数组: 2种
- 数组直接量: var arr=[];
- 用new: var arr=new Array(); 新建数组何时: 在创建数组时,还不知道数组中的元素内容时
创建-例
var arr1 = [ ]; //定义一个不包含元素的数组
var arr2 = [97, 85, 79]; //定义一个包含3个元素的数组 var arr3 = new Array(); //定义一个不包含元素的数组
var arr4 = new Array(“Tom”, “Mary”, “John”);
//定义一个三个字符串元素的数组
创建-创建数组同时初始化
- 数组直接量: var arr=[元素1,元素2,...];
- 用new: var arr=new Array(元素1,元素2,...);
何时: 在创建数组时,已经知道数组的元素内容
var array = [4500, 5500, 5000];
var array = new Array('市场部','研发部','运营部')[4500, 5500, 5000];
创建-先声明空数组,再添加元素
var mArray = new Array();
var empArray = [ ];
mArray[0] = '三国志';
empArray[0] = 'Scott'; mArray[2] = 195;
empArray[1] = 'Smith';
mArray[5] = true;
访问数组中的元素
元素: 数组中每个数据都是一个元素如何访问: 下标: 数组中唯一标识每个元素存储位置的序号特点: 从0开始,连续不重复何时: 只要访问数组元素,只能用下标如何: 数组名[i]——用法和单个变量完全一样!
数组GET操作与SET操作
设置数组元素的值——SET
var scores = [95, 88, 100];
scores[2] = 98; //将值为100的元素重新赋值为98
scores[3] = 75; //在数组尾部添加一个新的元素(下标从零开始,最大到length-1)
获取数组元素的值 GET
var cities = new Array('南京','杭州','青岛');
console.log( cities[1] ); //杭州
console.log( cities[3] ); //underfined(不会抛出数组下标且越界异常)
访问数组中的元素:
数组的length属性:记录了数组中理论上的元素个数
length属性的值永远是最大下标 +1
var arr4 = new Array(10);
console.log( arr4.length );//长度为10
var arr5 = [ ];//长度为0
arr5[0] = 87;//长度为1
arr5[3] = 98;//长度为4
数组的遍历
遍历数组元素,通常选择for循环语句,元素的下标作循环变量
固定套路
1.获得数组最后一个元素: arr[arr.length-1]
2.获得倒数第n个元素的位置: arr[arr.length-n]
3.数组缩容: 减小arr.length的数值,会删除结尾的多余元素。 4.遍历数组: 依次访问数组中每个元素,对每个元素执行相同
的操作
for(var i=0;i<arr.length;i++){
arr[i]//当前正在遍历的元素
}
特殊: 三个不限制:
1.不限制数组的元素个数
2.不限制下标越界
3.不限制元素的数据类型
索引数组: 下标为数字的数组
什么是关联数组:可自定义下标名称的数组
为什么:索引数组中的数字下标没有明确的意义
何时:只要希望每个元素都有专门的名称时
如何: 2步
- 创建空数组
- 向空数组中添加新元素,并自定义下标名称
关联数组的创建方式
var bookInfo = [ ];
bookInfo['bookName'] = '西游记' ;
bookInfo['price'] = 35.5 ;
组
遍历关联数组: for in循环
索引数组与关联数组的对比
索引数组
| vs | 关联数组: 不能用字符串输出 下标是自定义的字符串 length属性失效(=0) |
- 访问元素,都用数组名["下标"]
- 可用for循环遍历 不能用for循环遍历——for in
索引数组与关联数组的对比
查找:索引 hash数组
遍历 不用遍历
受存储位置影响 和存储位置无关
受数组元素个数影响 和数组中元素个数无关
今后只要希望快速查找元素时,就用hash数组