js语法基础入门(7)
7.数组
7.1.什么是数组以及相关概念?
什么是数组?是一组数据有序排列的集合。将一组数据按一定顺序组织为一个组合,并对这个组合命名,这样便构成了数组。
什么是数组元素?组成数组的每一个数据称为数组的一个数组元素。
什么是数组索引?每一个数组元素对应一个整数值,称为数组元素索引,或者数组元素下标。元素索引为非负整数,由0开始依次增加,即第一个元素索引为0,依次为1,2等。
什么是对数组元素的访问?对数组中各个元素,使用数组名加上以方括号”[ ]”括起来的元素索引进行访问。元素索引为元素在数组中的位置序号。
数组长度是什么鬼?数组元素的个数称为数组的长度。
如何创建数组?
创建数组语法格式:
var arr = new Array(); //创建一个空数组
var arr2 = new Array(1,25,37,46,95);//创建一个具有5个元素的数组
以上两种写法可以简写
var arr3 = []//创建空数组
var arr4 = [1,25,37,46,95];//创建一个具有5个元素的数组
7.2.什么时候用到数组
需要将多个类型一样的数据一次性告诉计算机让其保存时使用数组类型。 例如:告诉计算机保存一个班的成绩
var arr = [98,34,45,67,34,23,68,45,75,78];
告诉计算机保存一个班的年龄,姓名
这里要用二维数组表示
var arr = [
["小明",‘24’],
["小红",‘23’],
["小花",‘22’],
["小莉",‘25’],
["小刚",‘22’],
]
7.3.数组的操作
获取数组中的某个元素
//语法:数组变量名[索引值]
var arr = [98,34,45,67,34,23,68,45,75,78];
//如果要获取上面数组中的第三个元素45
console.log(arr[2]);//根据对应的下标来获取,数组的下标(索引)从0开始
//如果没有对应的下标,返回的值为undefined
console.log(arr[100]);//输出undefined 找不到下标100
获取数组的长度
语法:数组变量名.length;
//定义数组
var arr = [98,34,45,67,34,23,68,45,75,78];
//打印数组长度
console.log(arr.length);//10
删除数组中的元素
语法:delete 数组变量名 [索引]
//定义数组
var arr = [98,34,45,67,34,23,68,45,75,78];
//删除第二项
delete arr[2];
注意:使用delete删除数组元素与为其赋值为undefined类似,并不会修改length属性 。
//如果要清空数组可以这样写
arr = [];//将arr值赋值为空
或者
arr.length = 0;//将arr的长度设置为0
修改数组元素
语法:数组变量名称[索引] = 值
var names = ['张三','李四','王五'];
names[2]="坂田赖";//将names数组第二项修改掉
console.log(names);//['张三','李四','坂田赖'];
添加元素
语法:数组变量名称[数组长度] = 值
var names = ['张三','李四','王五'];
//增加元素
names[3] = "坂田三赖";
//上一条语句增加了一个元素,此时names长度为四
names[names.length] = "苍井老师";//在数组末尾增加元素
总结:数组操作中,常用的就是获取数组元素,修改元素其实就是先去找到对应的元素然后重新赋值的过程,增加元素可以直接用arr[arr.length] = “值” 搞定,对于数组的操作,数组本身会有很多好用的方法(函数),可以供我们直接调用
7.4.数组的遍历(重点)
什么是数组的遍历?所谓数组的遍历就是挨个取出数组中每个下标对应的每一项。
遍历数组有什么用?数组是一组数据的有序集合,我们可以用数组可以装一组或者多组数据,例如,学生表、成绩表、商品表、城市表等等,当我们需要将数组里面的数据展示出来的时候,就需要遍历数组,把数组里面的每一项都取出来,当我们想知道某个学生是否在校的时候,也要把学生表里面的数据遍历出来对比,因此,数组遍历在编程中非常重要,属于必须掌握的内容。
怎样遍历数组?遍历数组也就是每次去取数组里面的元素,前面我们已经学过怎样取数组里的某一个元素和怎样获取数组的长度,那么每次取一个元素属于重复动作,我们可以使用for循环来遍历数组,例如
//for循环遍历数组
语法结构:
for(var i = 0; i< 数组变量.length;++i){
var 元素变量 = 数组变量[i];
}
//>1.定义数组
var arr = [98,34,45,67,34,23,68,45,75,78];
//>2.循环遍历
for(var i=0;i<arr.length;i++){
var val = arr[i]
console.log(val);//循环一次打印一个元素出来
}
除了循环遍历数组以为,还有一个语句用于专业遍历数组的,哪就是for in 语句
for…in语法结构:
for(var i in 数组变量){
var 元素变量 = 数组变量[i];
}
//>1.定义数组
var arr = [98,34,45,67,34,23,68,45,75,78];
//>2.for in 遍历数组
for(var i in arr){
var val = arr[i];
}
总结:for循环和for in都可以用来遍历数组,for in遍历数组,还可以遍历对象,后面会学到,for in的写法也比较简单,代码简洁一些,如果写习惯了for循环估计有点不适应,但是必须得掌握,这里要强调得一点小细节就是,for循环中定义得变量i 属于数字类型,而for in中定义得变量i属于字符串类型
练习一 数组为:[1,3,5,7,24,32,25,48] 1.求数组奇数的个数和偶数的个数 2.求出上面数组的平均值
练习二 设计一个数组中的最大值的功能 [1,3,5,79,11] [-3,-5,-7,-121];
7.5.什么是二维数组?
首先,二维数组属于数组,那么就满足数组所有的特点,从本质上说二维数组和一维数组的区别就是,一维数组里面的每个元素是一个具体的值,而二维数组里面的每个元素是一个一维数组,也就是说二维数组类似于嵌套,在数组中放数组。
怎样定义二维数组?二维数组定义和一维数组一样,有两种方式
//>>1 定义几个一维数组
var arr1 = [1,2,3,4];
var arr2 = [5,6,7,8];
var arr3 = [9,10,11,12];
//>>2 将一维数组放到二维数组中
var arr =[arr1,arr2,arr3];//arr中又装了几个数组,这里arr就是是二维数组
//>>3 一次性定义一个二维数组
var arr = Array(
Array(98,34,45),
Array(95,24,43),
Array(68,324,455)
);
//>>4、简写上面数组,简写形式定义:
var arr = [
[98,34,45],
[95,24,43],
[68,324,455]
]
7.6.二维数组使用在哪里
数组就是有限个元素按一定顺序排列的集合,如果该数据集合又处于另外一个数据集合中,那么就可以使用二维数组来表示. 例如,一个小组的学生成绩:
每个学生的成绩使用一维数组表示,当一个小组的学生成绩必须再使用一个数组存放每个学生成绩的数组.如下:
//>>1 定义数组来装每个人到信息
var zhang = [80,92,92];
var wang = [61,65,71];
var li = [59,63,70];
var zhao = [85,87,90];
var zhou = [76,77,85];
//>>2 小组成绩:
var group = [zhang,wang,li,zhao,zhou]
//>>3 用简写形式定义:
var group = [
[80,92,92],
[61,65,71],
[59,63,70],
[85,87,90],
[76,77,85]
];
总结:数组到好处就是可以将一堆到数据有序到存储起来,遍历数组又比较简单,所以数组存取数据相当好用,尤其是学习了后段语言,接触到数据库的时候,数据中的表查询出来大多数情况都是二维数组,因此,数组必须学好
7.7.二维数组操作
二维数组的操作和一维数组相似,都可以对数组进行增删查改,不同的是查找元素的时候,需要往内层多查找一次。也就是说要找某个元素,必须先找到是二维数组里面多哪个数组,再根据这个数组找到里面对应到值
怎样访问二维数组中具体的元素?
//需求:将group数组中第一个元素80 打印出来
var group = [
[80,92,92],
[61,65,71],
[59,63,70],
[85,87,90],
[76,77,85]
]
console.log(group[0]);//这里访问到group数组里到第一个元素,但是是一个数组,不是具体到值
console.log(group[0][0])//根据上一个数组group[0],找数组下标为0的值就是80
总结:group[x] : 访问到二维数组中索引为x数组类型的元素 group[x][y]: 访问到二维数组中索引为x数组类型的元素,然后再通过y访问到数组类型元素中具体一个元素
怎样向二维数组中添加元素?
//>>1 定义一个二维数组
var group = [
[80,92,92],
[61,65,71],
[59,63,70],
[85,87,90],
[76,77,85]
];
//>>2 向二维数组中追加一个数组
group[5] = [11,12,13];
//>>3 向二维数组中的小数组追加一个值
group[5][4] = 99;
//>>4 打印新追加的元素
console.log(group[5]);
怎样修改数组中的元素?
//需求:将group数组中的第一个元素80 修改为90
//>>1 定义一个二维数组
var group = [
[80,92,92],
[61,65,71],
[59,63,70],
[85,87,90],
[76,77,85]
];
//>>2 找到第一个元素,并且赋值
group[0][0] = 90;
//>>3 打印出数组
console.log(group);
//此时可以在控制台查看 group[0][0]已经变成90
总结:其实数组元素的添加修改都非常简单,本质上都是给对应的下标赋值,如果没有对应的下标,那此次操作就是向数组添加元素,如果有对应下标,那就是修改元素
7.8.二维数组遍历
二维数组的遍历也比较简单,要理解的话需要分两步,上面我们说遍历一维数组需要用循环或者for in,如果是一维数组,那么经过一次循环遍历出来的就是每一个具体的值,二维数组经过循环以后,得到的每一个值是一个数组,因此,我们还要在这个数组的基础上再执行一次遍历,也就是说二维数组实际上是要做两次循环
//需求:将二维数组中的元素遍历出来
var group = [
[80,92,92],
[61,65,71],
[59,63,70],
[85,87,90],
[76,77,85]
];
//>>1 外层循环遍历出group中的每个小数组
for(var i=0;i<group.length;i++){
//这里group[i] 就是一个数组
//2 得到数组 group[i] 再将小数组里面的元素遍历出来
for(var j=0;j<group[i].length;j++){
//打印出小数组中的元素
console.log(group[i][j]);
}
}
//>> 使用for in 遍历二维数组
//>>1 外层循环遍历的得出的结果是数组 group[i]
for(var i in group){
//>> 2 在数组group[i]的基础上再做一次遍历
for(var j in group[i]){
//>>3 打印出小数数组的元素
console.log(group[i][j]);
}
}
总结:数组遍历是对循环对应用,如果不清楚循环结构,请查看前面流程控制对内容,数组的遍历经常会用到,属于必须掌握到内容,二维数组的遍历就是一个循环嵌套的问题,搞清楚循环嵌套,问题就迎刃而解。
螺钉课堂视频课程地址:http://edu.nodeing.com
js语法基础入门(7)的更多相关文章
- js语法基础入门(1)
1.基础入门 1.1.hello world 1.1.1.JavaScript是什么? JavaScript是一门跨平台.面向对象的轻量级脚本语言,在web开发中被广泛应用 1.1.2.JavaScr ...
- js语法基础入门(6)
6.函数 6.1.函数是什么? 函数就是具有名称和一定功能点代码块,这段代码块被封装起来,由一组语句组成,它们是JavaScript的基础模块单元,用于代码复用.信息隐藏和组合调用.一般来说,所谓编程 ...
- js语法基础入门(1.2)
1.4.查找元素的方法 1.4.1.查找元素的方法 JavaScript可以去操作html元素,要实现对html元素的操作,首选应该找到这个元素,有点类似于css中的选择器 html代码: <d ...
- js语法基础入门(5.2)
5.2.循环结构 当一段代码被重复调用多次的时候,可以用循环结构来实现,就像第一个实例中出现的场景一样,需要重复询问对方是否有空,这样就可以使用循环结构来搞定 5.2.1.for循环语句 //语法结构 ...
- js语法基础入门(5.1)
5.流程控制 5.1.选择结构 程序流程图 图例: 椭圆: 开始/结束 矩形: 操作 菱形: 判断 连接线: 走向 可以根据程序流程图,理清楚程序执行的流程 5.2.1.if语句 //if语句语法结构 ...
- js语法基础入门(4)
4.运算符 4.1.什么是运算符? 运算符就是用来表示具体运算规则的符号,例如数学计算中的加减乘除就是具体的运算规则,我们分别用"+ - * /"等符号来表示 4.2.运算符的分类 ...
- js语法基础入门(3)
3.数据类型 3.1.数据类型学习重点 前面我们通俗的讲了,数据类型其实就是对数据进行了分类,那么,在js中到底把数据分成了几类?这些类的名称叫什么?每个分类下面有那些值?这些问题是需要记清楚的,例如 ...
- js语法基础入门(2)
2.变量 2.1.变量的声明 声明变量的时候没有赋值,默认输出undefined //通过var 声明一个变量 var user: //默认输出undefined 可以同时声明多个变量 var use ...
- Swift语法基础入门三(函数, 闭包)
Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...
随机推荐
- Java实现 蓝桥杯VIP 算法训练 与1连通的点的个数(并查集)
试题 算法训练 与1连通的点的个数 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 没有问题描述. 输入格式 输入的第一行包含两个整数n, m n代表图中的点的个数,m代表边的个数 ...
- java实现第六届蓝桥杯灾后重建
灾后重建 题目描述 Pear市一共有N(<=50000)个居民点,居民点之间有M(<=200000)条双向道路相连.这些居民点两两之间都可以通过双向道路到达.这种情况一直持续到最近,一次严 ...
- java实现第五届蓝桥杯斐波那契
斐波那契 标题:斐波那契 斐波那契数列大家都非常熟悉.它的定义是: f(x) = 1 .... (x=1,2) f(x) = f(x-1) + f(x-2) .... (x>2) 对于给定的整数 ...
- css3中的@font-face你真的了解吗
css3中的自定义字体方法@font-face @font-face属性可以让我们自定义网站字体属性,然后引用到想要应用该字体的元素上. 基本语法: @font-face { font-family: ...
- c常用函数-strlwr 和 strupr
strlwr 和 strupr strlwr的功能是把一个字符串全部变成小写, strupr的功能则是把一个字符串全部变成大写.语法结构分别如下: Action() { char test[] = & ...
- 利用Azure Functions和k8s构建Serverless计算平台
题记:昨晚在一个技术社区直播分享了"利用Azure Functions和k8s构建Serverless计算平台"这一话题.整个分享分为4个部分:Serverless概念的介绍.Az ...
- cb50a_c++_STL_算法_局部排序partial_sort
cb50a_c++_STL_算法_局部排序partial_sort partial_sort(b,se,e)排序一部分,begin,source end,endcout << " ...
- python的坑--你知道吗?
python的坑--你知道吗? 1.列表的坑 坑的地方是:因为列表用pop之后,后面的索引都会自动减一 # 列表的坑之一 list1 = ['python','java','php','c','c++ ...
- Machine Learning Note
[Andrew Ng NIPS2016演讲]<Nuts and Bolts of Applying Deep Learning (Andrew Ng) 中文详解:https://mp.weixi ...
- 11.DRF-权限
Django rest framework源码分析(2)----权限 添加权限 (1)API/utils文件夹下新建premission.py文件,代码如下: message是当没有权限时,提示的信息 ...