首页 > 编程笔记 > JavaScript笔记 > JS数组
JS二维数组的定义和使用
JavaScript 并没有直接支持二维数组,但是可以设置数组元素的值等于数组,这样就能模拟二维数组的结构。如果三维数组中每个元素的值也为数组,则可以模拟三维数组,以此类推,通过数组嵌套的形式可以定义多维数组。
1) 二维数组
2) 三维数组
在存取多维数组时,左侧中括号内的下标值不能够超出数组范围,否则就会抛出异常。因为,如果第一个下标超出数组范围,返回值为 undefined,显然表达式 undefined[1] 是错误的。
示例1
下面定义一个二维数组。var a = [ //定义二维数组 [1.1, 1.2], [2.1, 2.2] ];
示例2
下面示例使用嵌套 for 语句,把 1~100 的正数以二维数组的形式进行存储,设计二维数列。var a = []; for (var i = 0; i < 10; i ++) { //行循环 var b = []; //辅助数组 for (var j = 0; j < 10; j ++) { //列循环 b[j] = i * 10 + j + 1; //定义数组b的元素值 } a[i] = b; //把数组b赋值给数组a } console.log(a); //返回1~100的二维数列数列格式如下:
a = [ [1,2,3,4,5,6,7,8,9,10], [11,12,13,14,15,16,17,18,19,20], [21,22,23,24,25,26,27,28,29,30], [31,32,33,34,35,36,37,38,39,40], [41,42,43,44,45,46,47,48,49,50], [51,52,53,54,55,56,57,58,59,60], [61,62,63,64,65,66,67,68,69,70], [71,72,73,74,75,76,77,78,79,80], [81,82,83,84,85,86,87,88,89,90], [91,92,93,94,95,96,97,98,99,100] ];
示例3
JavaScript 不支持二维数组,用户可以模仿二维数组的语法格式来定义数组。下面的写法在语法上虽然不符合规定,但是 JavaScript 也不会抛出异常。var a = []; a[0,0] = 1; a[0,1] = 2; a[1,0] = 3; a[1,1] = 4;如果调用 length 属性,返回值为 2,说明仅有两个元素,分别读取元素的值。
console.log(a.length); //返回2,说明仅有两个元素有效 console.log(a[0]); //返回3 console.log(a[1]); //返回3JavaScript 把二维数组的下标视为一个逗号表达式,其运算的返回值是最后一个值。前面两行代码赋值就就被后面两行代码赋值覆盖了。因此,如果经过计算之后才确定了下标值,然后再进行存取操作,则可以按如下方式进行设计。
var a = [], i = 1; //初始化变量 while(i < 10) { //指定循环次数 a[i *= 2, i] = i; //指定下标为2的幂数时才进行赋值 } console.log(a.length); //返回17 console.log(a); //返回数组[,,2,,4,,,,8,,,,,,,,16]
访问多维数组
读写多维数组的方法与普通数组的方法相同,都是使用中括号进行访问,具体格式如下:1) 二维数组
数组[下标表达式] [下标表达式]
2) 三维数组
数组[下标表达式] [下标表达式] [下标表达式]
更高维度的数组以此类推。示例
下面代码设计了一个二维数组,然后分别访问第 1 行第 1 列的元素值,以及第 2 行第 2 列的元素值。var a = []; //声明二维数组 a[0] = [1,2]; //为第一个元素赋值为数组 a[1] = [3,4]; //为第二个元素赋值为数组 console.log(a[0][0]); //返回1,读取第一个元素的值 console.log(a[1][1]); //返回4,读取第四个元素的值
在存取多维数组时,左侧中括号内的下标值不能够超出数组范围,否则就会抛出异常。因为,如果第一个下标超出数组范围,返回值为 undefined,显然表达式 undefined[1] 是错误的。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算