谈谈JavaScript中的数组

这是我参与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 属性可读写

你好哇,我是南极大冰块,一个技术与颜值成正比的前端工程师,崇尚一针见血的搞定前端问题,希望我的博客有帮助到了你。

关注我,前端路途一起走。嘿哈~?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享