JS数组

135 阅读3分钟

为什么要学习数组

   之前了解的基本数据类型,都只能存储一个值。
   如果我们想存储班级中所有学生的姓名,这时候一个变量就无法胜任,
   那么数组就可以解决这个问题。
   所谓数组就是将多个相关联的数据存放在一起,专业点说就是统一放在一个集合中。
   那么这个集合我们就可以称之为数组

数组作用:存储一组数据,便于对这些数据进行统一管理。

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);