这是我参与8月更文挑战的第26天,活动详情查看:8月更文挑战
前言
大家好哇,今天我们来谈谈JavaScript中的数组,大神请绕道,因为本文基本摘自我刚入行时的笔记哦~
什么是数组
通俗:数组就一个容器,可以用来存储多个数据
概念:数组是有序的集合
本质:数组是程序在内存中申请的N块连续的空间
为什么要有数组
string,int,obj等数据类型,只能存储单一的值。如果我们想存一个列表,这时就需要数组了。
数组可以把一组相关的数据一起存放,并提供方便的访问方式。
创建数组
var arrStus01 = new Array() // 创建一个空新数组
// 当为 Array(num) 括号中只传入 1个 数值 时,代表 数组的初始长度
var arrStus02 = new Array(3) // 创建一个新数组 并 设置初始空间为 3 (只传入 1个数值)
var arrStus03 = new Array('小白','小黑','大黄','大冰块') // 创建一个新数组,设置4个空间并分别赋值
复制代码
数组的字面量
JS中存在字面量,可以更加方便的编写代码
使用数组字面量 创建 空数组
1.使用 new 方式创建 数组对象
var arrStus01 = new Array()
复制代码
2.使用 数组字面量 方式创建 数组对象
var arrStus02 = [] // 其实就是 new Array();
复制代码
3.使用数组字面量 创建 带初始值 数组
//1.使用 new 方式创建 带初始值数组对象
var arrStus01 = new Array('小白','小黑','大黄','瑞奇')
//2.使用 数组字面量 方式创建 带初始值数组对象
var arrStus02 = ['小白','小黑','大黄','瑞奇']
复制代码
- 注意:数字字面量 [] 的方式创建数组实例时,没有 设置初始容量的语法
数组元素的类型
数组中每个空间里存放的值 叫 元素
数组中可以存放任意类型的数据
var arrStus01 = ['小白',12,true,28.9]
复制代码
设置和访问数组元素
数组可以通过 下标 来 访问、设置、修改 对应下标空间 里的元素
元素: 数组中每个空间里存放的数据
下标: 用来访问数组空间的 序号 (数组下标从 0 开始)
var arrStus = new Array(3)
//1.通过下标 为对应空间 赋值
arrStus[0] = '大白很暖'
arrStus[1] = '有点儿意思'
arrStus[2] = '记得打call~!'
//2.通过下标 访问对应空间 里的值
alert(arrStus[1]); // '有点儿意思'
复制代码
数组的length属性
数组.length 用来访问数组里 空间 的数量(数组长度)
alert('arrStus数组包含的空间个数:' + arrStus.length) // arrStus数组包含的空间个数:3
复制代码
数组.length 也可以用来修改数组长度,例如: arrStus.length = 5
,因为数组的容量可以直接通过 length 来修改。
arrStus.length = 5
复制代码
当然,也可以通过设置更小的 length 来 减少数组的空间
//注意,这个数组实例 在上例中 已经设置了 length = 5,在本例中 设置为 2
arrStus.length = 2
复制代码
遍历数组所有成员
通过for循环下标遍历
var arrStus = new Array(3)
//1.通过下标 为对应空间 赋值
arrStus[0] = '大白很暖'
arrStus[1] = '有点儿意思'
arrStus[2] = '记得打call~!'
//2.通过for循环遍历数组里的每个元素
for(var i = 0; i < arrStus.length; i++){
console.log('arrStus['+ i +'] = ' + arrStus[i])
}
复制代码
例题
下面我们来看几道题目,深入的学习一下数组。
例题1:求一组数值 [2,6,1,77,52,25,7] 的最大值,以及所在下标位置
var arrNum = [2,6,1,77,52,25,7]
var maxNum = -1 // 用来 保存最大元素
var maxNumIndex = -1 // 用来 保存最大元素所在下标
//从 0 开始循环数组里的每个元素
for(var i = 0;i< arrNum.length; i++){
//如果 数组里当前循环的元素 大于 maxNum,则保存 这个元素和下标
if(arrNum[i] > maxNum){
maxNum = arrNum[i] // 保存数值到 变量maxNum
maxNumIndex = i // 保存数值下标到 变量maxNumIndex
}
}
alert('最大值为:'+ maxNum + ',它的下标为:' + maxNumIndex)
复制代码
例题2:要求将数组 [2,0,6,1,77,0,52,0,25,7] 中的 0 去掉后 形成一个不包含 0 的新数组。
var arrNum = [2,0,6,1,77,0,52,0,25,7] // 原数组
var arrNumNew = [] // 新数组
for(var i = 0;i < arrNum.length; i++){
//如果原数组中当前循环的值 不等于零,则存入新数组
if(arrNum[i]!=0){
arrNumNew[arrNumNew.length] = arrNum[i] // 向新数组中追加 一个 元素空间 并赋值
}
}
alert(arrNumNew) // 打印新数组:2,6,1,77,52,25,7
复制代码
例题3:翻转数组,将数组[2,6,1,77,52,25,7] 的内容反过来存放。
var arrNum = [2,6,1,77,52,25,7] // 原数组
var arrNumNew = [] // 新数组
//从原数组 的最后一个 开始 往 前 访问,并将值顺序 存入 新数组
for(var i = arrNum.length - 1; i>=0;i--){
arrNumNew[arrNumNew.length] = arrNum[i]
}
alert(arrNumNew) // 打印新数组:7,25,52,77,1,6,2
复制代码
后记
通过今天的学习,我们基本掌握了以下几点:
数组的 元素 可以是 任意类型
数组的 长度(容量) 是可变的
数组的 length 属性可读写
你好哇,我是南极大冰块,一个技术与颜值成正比的前端工程师,崇尚一针见血的搞定前端问题,希望我的博客有帮助到了你。
关注我,前端路途一起走。嘿哈~?