一、JavaScript 数组的概念
数组的概念
- 程序 = 数组 + 算法
- 所谓数据结构,就是把数据与数据间的关系按照特定的结构来保存。设计合理的数据结构是解决问题的前提
- 数组(Array),就是一种很常用的保存批量数据的数据结构。
- 多个元素组成的集合--在一个变量中存储多个值
- JS数组中元素的数据类型可以相同,也可以不同
- 元素按线性顺序排列。所谓线性顺序指除第一个元素外,每一个元素都有唯一的前驱元素;除最后一个元素外,每一个元素都有唯一的后继元素("一个跟一个")
- 可以通过元素所在位置的顺序号(下标)做标识来访问每一个元素(下标从0开始,最大到元素的个数-1)
二、JavaScript 数组的定义和初始化
定义一维数组
- 可以使用如下四种格式定义一个数组变量
初始化数组
- 数组中的元素可以在定义时初始化
- 可以先声明一个空数组,随后再向其中添加元素
数组是引用类型对象
- 引用类型? 值不保存在变量本地的数据类型
- 什么是对象?js中的对象,指内存中集中保存一组相关数据和功能的整体
- 对象中保存了相关的数据和对数据的常用操作方法
- 如何创建对象? 对象都是用new操作符创建的
- 什么是new关键字? new专门用于在堆中动态开辟一块存储空间,然后返回存储空间的地址
- 所以,使用new创建出的都是引用类型的对象
- 数组赋值给变量时,其实赋值的是地址
null关键字
- 什么是null?null专门表示一个变量不再指向任何对象地址
- null与undefined:
- 共同点:都是原始类型,保存在栈中变量本地
- 不同点:
- undefined: 表示变量声明过但未被赋过值。是所有未赋值变量的默认值。一般不主动使用
例如: var a; // a 被自动赋值为undefined
- null:表示一个变量将来可能指向一个对象,但目前暂时什么都没指向。一般用于主动释放指向对象的引用
例如: var emps = ['Scott','Smith'];
emps = null; //释放指向数组的引用
null与undefined
- 例如:
三、JavaScript 访问数组
访问数组元素
获取数组的长度
- 使用length属性获取数组中元素的个数,即数组的长度
遍历数组元素
- 遍历数组元素,通常选择for循环语句,元素的下标作循环变量
for...in 声明
- for...in 遍历数组元素
- 索引数组:以0,1,2...数字作下标
- 关联数组:以一个字符串作下标
四、JavaScript 数组的常用方法
获取数组字符串
- toString()方法可以把数组转换为字符串,并返回结果
- join([]seperator)返回一个字符串,由每个元素转换而成的字符串使用指定的separator拼接而成
连接数组
- concat()拼接两个或更多的数组,并返回结果
- 语法: arrObject.concat(arr1,arr2... arrn);
- 该方法不会改变现有数组,仅仅返回一个拼接后的副本
- 每个参数可以是一个值,也可以是一个数组
- 可以接受任意多个参数
获取子数组
- slice()返回现有数组的一个子数组
- 语法: arrObject.slice(start,[end]);
- 参数start指定从哪个下标处开始选取;若取值为负数,则表示从尾部开始算起,如-1指最后一个元素,-2指倒数第二个元素
- 参数end指定结束处的下标(不包含);可以省略或取负值
修改数组
- splice()从数组中删除一部分元素,并添加另一部分元素
- 语法: arrObject.splice(start,count,e1,e2,...en);
- 参数start:指定添加/删除的起始位置,可取负值
- 参数count:要删除的元素个数;0表示不删除
- e1,e2,...en:在start处新添加的项
- 返回被删除的项目;现有数组内容会改变
倒转数组
- reverse()颠倒数组中元素的顺序
- 语法: arrObject.reverse();
- 现有数组内容会改变
进出栈操作
- push()入栈,在栈顶(数组尾部)添加指定的元素,并返回新的长度
- pop()出栈,删除并返回栈顶(数组尾部)的元素
- 除了push()和pop()外,Array对象还专门提供了shift()和unshift()方法,专用于从数组头部增减元素
五、JavaScript 二维数组
二维数组的概念
- 二维数组: 从整体上来看,是一个数组,只是其中的每个元素又是一个数组,即数组的数组。例如:
创建二维数组
- 定义一个规整的二维数组
- 定义一个不规整的二维数组
- 定义一个形如"表格"的二维数组
使用二维数组
- 访问二维数组中的某个元素
- 遍历二维数组中的每个元素---循环的嵌套
总结:本章内容主要介绍了 JavaScript 数组(创建、访问、常用方法、二维数组)
转载于:https://blog.51cto.com/jasonteach/1757203