React二维数组的几种声明和使用过程
作者:魔猴疯猿
React二维数组的几种声明和使用
React中对二维数组的声明和使用的方式有多种,其中存在一些常见的错误使用情况。
例如const map=[[]] 这样定义二维数组,本篇文章给大家解析一下react数组使用的正确方法和错误使用的错误原因。
如果我们要使用的二维数组是有默认值的,那我们可以直接在声明时赋值,例如这样:
const map = [[1,2],[3,4],[5,6]];
这个map变量的值是可变的,但是它的结构是不可变的,要修改它可以这样写:
map[0] = [1,2,3]
但是,如果我们这样写就会报错:
map[3] = [1,2,3]
因为我们对map的定义初始化的时候,按照react的语法,只要值不为空,那么数组的大小就是不可变的,但是数组的值是可变的。所以我们给map[3]赋值,这个map[3]并不存在,map只有0到2三个值,就会报错。
但是对于map[0],[1,2]是它的一个值,这个值可以被整体替换为 [1,2,3],没有问题。
按这个道理
如果我们这样做也是会报数组溢出的:
map[3][4] = 1;
如果我们想要数组的大小动态可变怎么办呢,我们可以这样来初始化:
const map = []
这里把map首先定义为一个数组,这个时候[]内没有值,就代表这是一个没有初始值的数组,其数组大小不是0,而是不确定,可以动态赋值,例如:
map[0] = []
这里我们给map加了一个0号元素,值也是一个不确定大小的未初始化数组,这个数组也可以被动态添加值:
map[0] [0] = 1;
但是我们要注意,当map[0]被赋值时,map的大小才会扩展为1,如果没有给map[0]赋值,直接给map[1]赋值时是不能成功的:
按照这个理论
如果我们要初始化一个动态扩展的二维数组,我们应该这样做:
const map = []; //在使用时,动态扩展 for(var i=0;i<count;i++){ map[i] = []; }
我们要给map定义为一个一维数组,然后动态添加数组元素作为其元素值。
注意,不能这样写:
const map = [[]];
看似定义了一个空的二维数组,实则不然,这个写法的意思是定义了一个数组,数组中只有一个数组类型的元素,外层[]中的[]代表了一个元素,相当于给了外层数组初始值,这个数组就不是动态可扩展的了,而是外层只能有一个元素,这时map[1]就是不存在也不可赋值的。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。