为什么要学习数组
之前学习的基本数据类型,都只能存储一个值。如果我们想存储班级中所有学生的姓名,这时候一个变量就无法胜任,那么数组就可以解决这个问题。
所谓数组就是将多个相关联的数据存放在一起,专业点说就是统一放在一个集合中。 那么这个集合我们就可以称之为数组
数组作用:存储一组数据,便于对这些数据进行统一管理。
js数组内可以存储任意类型的数据
定义数组(Array)
使用字面量[]
来创建一个数组。
字面量其实就是指字面上所看到的值
// 创建一个空数组
var arr1 = [];
// 创建一个包含3个元素的数组,数组里面的每个元素以逗号隔开
var arr2 = [1, 3, 4];
// 创建一个数组,存储四天天王
var users = ['郭富城','黎明','张学友','刘德华'];
console.log(users.length); // 4 获取数组元素个数
通过构造函数来创建数组
var arr = new Array(4) // 创建一个初始长度为4的数组
大多数情况还是推荐使用字面量来创建数组
数组元素及索引
什么是数组元素?
数组中的每一项!我们就把它们称之为数组元素,数组元素可以是任意的数据类型(字符串,整形,布尔、数组、对象…)
数组下标(索引)
数组中的每个元素都有其对应的序号,这个序号我们称之为是下标(索引)。
有了下标就可以访问某个数组元素。
好比你去超市买东西,把身上的东西暂存到储物柜中,买完之后,凭着储物柜的编号就可以取回来。
下标从0
开始依次递增。 数组第1个元素下标为0, 数组第2个元素下标为1
数组第n个元素下标为n-1
依此类推。
通过数组下标获取数组元素,如果下标不存在,则返回undefined
数组变量名[下标]
// 功能:获取数组对应下标的值,如果下标不存在,则返回undefined。
var arr = ['老王','老李','老罗'];
console.log(arr[0]); // 老王
console.log(arr[1]); // 老李
console.log(arr[2]); // 老罗
console.log(arr[3]); // 这个数组的最大下标为2,不存3,因此返回undefined
提示:最大下标= 数组长度-1
遍历(循环)数组
所谓遍历,就是对数组的每一个元素都访问一次就叫遍历
for循环可以遍历数组
var stus = ['王宁', '黄骞', '王慧', '朱媛', '李雪敏', '凡凡']
for(var i = 0; i < stus.length; i++) {
console.log(stus[i])
}
向数组中新增和修改元素
// 定义一个数组,存储线上同学姓名
var stus = ['王宁', '黄骞', '王慧', '朱媛', '李雪敏', '凡凡']
// 向数组尾部添加一个张三
// stus[6] = '张三'
// stus[7] = '蓓蓓'
// 有没有更好的办法直接向数组末尾添加元素
stus[stus.length] = '张三'
stus[stus.length] = '蓓蓓'
// 把下标为1的内容改为黄钱
stus[1] = '黄钱'
console.log(stus)
for (var i = 0; i < stus.length; i++) {
console.log(stus[i])
}
二维数组
定义:如果数组中的某个元素又是一个数组,那么我们可以把此数组称之为二维数组。那么依此类推,还有三维数组和四维数组。
实际开发中基本不会超过三维数组,太深了会导致代码可读性差,后期难以维护。
使用for来遍历循环二维数组
var arr = [
['老王','九江','29'],
['老李','广州','34'],
['老罗','深圳','39'],
];
for(var i=0; i<arr.length; i++){
// 打印每个元素的名字
console.log(arr[i][0]);
}
数组内置函数push
push():将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
unshift: 向数组头部添加一个或多个元素,并返回数组的新长度
函数:可以实现某个特定的功能。
当站在对象的角度去调用一个函数的时候,我们一般把函数称之为方法。
调用形式:
parseInt() // 函数
变量名.属性; // 如:arr.length
变量名.方法名(); // 如:arr.push(数据) 人.吃饭()
数组push
函数,向数组尾部新增元素:
var users = ['高圆圆', '范冰冰', '李冰冰', '韩冰冰']
// users[users.length] = '王冰冰'
// push:向数组尾部添加一个或多个元素,并返回数组的新长度
users.push('王冰冰')
users.push('王宝强')
users.push('汪哥', '倩倩')
// unshift:向数组头部添加一个或多个元素,并返回数组的新长度
users.unshift('赵又廷')
users.unshift('廖帅', '张敏')
console.log(users);