- 、初识数组
数组:一组变量的集合,连续保存多个数据的引用类型的对象
如何创建数组:
1. 创建空数组 var 数组名=[];
暂时不知道数组内容的时候,先创建再追加
2. 创建数组的同时直接初始化内容
var 数组名=[值1,值2,...];
3. 创建指定个数的数组
var 数组名=new Array(n);
创建一个数组对象,同时初始化n个空元素
4. 创建同时直接初始化
var 数组名=new Array(值1,值2,...);
注意:3,4创建数组方式不常用,因为有分歧
var arr=new Array(7);
可以解释为初始化了7个空元素,也可以解释为初始化了一个数组只放了一个元素值为7
数组分类:
1). 索引数组
下标从0开始每次递增1
length - 元素个数
2). 关联数组(哈希数组)
下标可以自定义,而且下标不可重复
length - 失效
3). 二维数组 - 元素又指向另一个子数组对象
下标分为行下标和列下标,都是从0开始,每次递增1
行 - length获得数组中有多少个子数组对象
列 - length获得子数组中的元素个数
所有的数组都有下标!只不过每种数组下标特点不同
都有length属性,length属性表示数组的长度 - 保存了多少个元素
如何获得某个元素值: var 变量=arr[下标]
如何获得数组长度: arr.length
如何获得最后一个元素值:arr[arr.length-1]
5、undefined与null
1). 所有仅声明未赋值的变量的默认值 - undefined
undefined为空 - 修饰原始数据类型
2). null - 修饰对象的空
null专门表示一个变量不再指向任何对象的地址了!
null的用法有2种:
a). var 变量 = null; - 打标记
表示将来该变量即将指向一个对象,只是此时什么都没有指向
b). var obj = 对象;
把该对象使用完毕后,就把obj主动赋值null - 》 obj=null
将来一个变量不再指向对象了,那么可以主动赋值为null
这么做得话,就表示主动的释放内存,节省内存空间从而提高浏览器性能
内存中有个垃圾回收器,如果一个对象没有变量指向(引用),那么就会被
垃圾回收器回收,从而释放内存
js中的对象:内存中保存一组相关数据和功能的整体
对象都是new操作符创建的
new专门在内存中开辟一个空间,保存数据和功能,返回*存储地址*
- 、数组遍历
1、索引数组的下标从0开始,每次递增1的特性
这个下标天生就是一个循环变量
下标递增到<length结束 - 循环条件
2、冒泡排序:将数组中的元素按照从大到小(从小到大)的顺序进行排列
- 关联数组(哈希数组)
关联数组(hash哈希数组)- 可以自定义下标的数组
关联数组的key(下标)不可重复,length属性失效
如何遍历hash数组:
for(var key in obj){
console.log(obj[key])
}
- 、实现数组去重复
- 、两种方法、
- 关联数组,使用关联数组的数组下标不重复的属性
- 数组的API;(indexOf)
- 、使用关联数组的下标不重名的属性,演示以及案例
- 、数组API api提供了一整套定义好的方法,可直接使用
- .concat合并数组 var new arr=arr.concat(数组1/普通值,数组2/普通值,[数组],值)
- .join () 可以把数组转化为字符串 可以自定义拼接符
- .toString() 可以把数组转化为字符串 不可以自定义拼接符
- .indexOf(元素) 判断某一个元素在数组中第一次出现的位置,如果没有返回-1
- .arr[元素]=值 新增/修改数组的元素 如果该下标没有元素,新增。否则就是修改
- .length 获取数组的长度
- .Push 在数组后面追加元素,直接把数组修改了。返回的是数组的长度
- .Pop 删除数组最后一个元素,直接把数组修改了。返回的是删除数组的长度
- .Unshift 在数组前面追加元素,直接把数组修改了。返回的是数组的长度
- .Pop 删除数组第一个元素,直接把数组修改了。返回的是删除数组的长度
- .reverse(); 数组反转
- splice(start,num,元素(可选)) start操作开始的下标位置 num删除的数量 其余元素代表在数组中插入的元素可选
- 数组排序
需要自定义一些函数参数 升序 比较规则是内置的,我们只需要按照规则使用即可 arr.sort(function(a,b){return a-b});
降序排列
arr.sort(function(a,b){return b-a});
五)、解释案例(去重)