JavaScript 二维数组定义与初始化的三种方法及注意事项

作者:闭包旅人时间:2026-10-28 08:05:48浏览:426

本文总结JavaScript中创建二维数组的三种常用方法:直接定义初始化、动态长度赋值以及数组组合。重点解析了使用逗号运算符和方括号语法时的常见误区,并补充了Ajax传输中字符串键名数组的处理方案及长度判断技巧,帮助开发者避免数据传递错误。

JavaScript 二维数组的三种定义方法

第一种方法是直接定义并同时初始化数组,这种方式适用于数据量较少且结构固定的场景。

var _TheArray = [["0-1","0-2"],["1-1","1-2"],["2-1","2-2"]]

第二种方法适用于事先未知二维数组长度的情况。


var tArray = new Array(); //先声明一维
for(var k=0;k<i;k++){ //一维长度为i,i为变量,可以根据实际情况改变
tArray[k]=new Array(); //声明二维,每一个一维数组里面的一个元素都是一个数组;
for(var j=0;j<p;j++){ //一维数组里面每个元素数组可以包含的数量p,p也是一个变量;
tArray[k][j]=""; //这里将变量初始化,我这边统一初始化为空,后面在用所需的值覆盖里面的值
 }
}

通过为已定义的数组指定索引并传入所需值,例如 tArray[6][1]=5;即可将数值5存入数组,从而覆盖初始化的空值。

第三种方法针对前两种方法的局限性提出。前两种方法在定义时往往需要预先初始化,虽然后续可动态修改,但操作仍不够便捷。

因此,尝试了一种能够动态传入值到数组中的新方法。

以下是在实践过程中遇到的一些关于数组的有趣现象。

起初以为可以像下面示例那样直接传入值。


for(var a=0;a<i;a++){
tArray[a]=(matArray[a],addArray[a]); //matArray[a]和addArray[a]是两个数组,这两个数组直接传入tArray[a]中

};

实际结果是 tArray[a] 接收的是后一个数组的值,matArray[a] 的内容被忽略;如果调整位置使 matArray[a] 在后,则传入的是 addArray[a] 的值。

思考一个简单的例子。


var a=[1,2];
var b=[];
b[0]=a;//把数组a作为b数组的元素传入b数组中
alert(b[0][1]); //2

上述是最基础的二维数组形式。

若换一种写法。


var b=[];
b[0]=[1,2];//把数组[1,2]作为b数组的元素传入b数组中
alert(b[0][1]); //2

可以看出,上面的 b[0]=[1,2] 这种写法是可行的。


for(var a=0;a<i;a++){
tArray[a]=[ matArray[a],addArray[a] ]; 上面例子中的()修改为[] 就可以成功的组成一个二维数组了
};

总结第三种方法。


for(var a=0;a<i;a++){
tArray[a]=[ aArray[a],bArray[a],cArray[a]]; 还可以增加dArray[a],eArray[a]
};

这种方法适用于已知若干个一维数组,并将它们组合成一个二维数组的场景。

JS 创建多维数组


 <script>
 var allarray=new Array();
 var res="";
 function loaddata()
 {
 for(var i=0;i<3;i++)
 {
 var starth=i*200;
 var strarw=i*200;
 var endh=(i+1)*200;
 var endw=(i+1)*200;
 allarray[i]=new Array();
 allarray[i][0]=new Array();
 allarray[i][1]=new Array();
 allarray[i][0][0]=starth;
 allarray[i][0][1]=strarw;
 allarray[i][1][0]=endh;
 allarray[i][1][1]=endw;
 }
 for(var i=0;i<allarray.length;i++)
 {
 var sh=allarray[i][0][0];
 var sw=allarray[i][0][1]
  var eh=allarray[i][1][0];
 var ew=allarray[i][1][1]
 res+="第"+i+"个坐标的开始坐标是:"+sh+","+sw+"结束坐标是:"+eh+","+ew+"<br/>";
 }
 document.getElementById("dv").innerHTML=res;
 }
</script>

Ajax 传输与字符串键名处理

补充资料:

在项目开发中,曾遇到通过JS传递带有字符串键名的二维数组至后台却返回 false 的情况,尝试多种方法未果。特此介绍 JS 数组初始化的相关问题。

以及在 Ajax 环境下如何传递带有字符串键名的数组。

一维数组:

一维数组可以使用数字或字符串作为键名。

var data = [];//不知道个数 var data = new Array(); //不知道个数

如果已知具体数量,可以使用以下数值定义方式。


var data = new Array(1);
data['a'] = 'a';

或者

var data= ['a'];

二维数组:

二维数组不支持字符串作为键名。

一:


var data = [];
data.push(['a']);

或


var data_1 = ['a'];d
ata[0]=data_1;

二:


var data=new Array();
for(var i=0;i<2;i++){
data[i]=new Array(); 
for(var j=0;j<2;j++){
data[i][j]=1;
}

提醒:

在使用 Ajax 传递数据时,JS 数组必须使用数字键名。

若需使用字符串作为键名,必须通过对象的形式传递,如下所示。


var data ={
'a':{'id':1,'url':h}
};

这篇文章介绍了相关要点。

动态定义与长度判断技巧

JS 二维数组的定义及长度判断

动态定义二维数组:

1.先定义一维:

var arr = new Array();

2.定义二维:

arr[0] = new Array();

arr[1] = new Array();

3.给数组赋值:

arr[0][0] = "00";

arr[0][1] = "01";

arr[1][0] = "10";

arr[1][1] = "11";

4.判断数组长度:

二维数组的行数:arr.length

相应行的列数:arr[0].length //第一行的长度 以上例来算此值为2

5.数组的调用:

很简单:var str = arr[0][0];

作者最新文章