javascript多维动态数组

htm*_*11h 12 javascript

我可以使用一些指导来在javascript中指定动态多维数组.我知道javascript本身并不是定义多个dim数组,而是一个数组的数组,即.

 var items = [[1,2],[3,4],[5,6]];
Run Code Online (Sandbox Code Playgroud)

要么

 var array = [[,],[,]]
Run Code Online (Sandbox Code Playgroud)

要么

 var a = [[1,2],[3,4]]
Run Code Online (Sandbox Code Playgroud)

我的问题是我不知道实际的尺寸,只是定义数组,如上面的第二个例子,仍然不允许数组超出两个记录集.我以为有一个类似于VB的REDIM stmt但是找不到任何东西.

我的另一个问题是,当我指定数组的第二个维度时,如下例所示,数组在for块之外变得无法访问.

var Exforsys=new Array(4)
for (i=0; i <4; i++) {
   Exforsys[i]=new Array(4)
}
Run Code Online (Sandbox Code Playgroud)

我试图从我的特定数组中检索数据,如...

 function newTest() {
        var myArray = [[],[]];
      //  myArray[] = new Array(14);

        var recCount = coordsAry.length / 15;
        var n =0;

        var i = 0;
        var s = 0;

        for (i = 0; i < recCount; i++) {
            for (s = 0; s < 15; s++) {
              //  myArray[i] = new Array(14);

                myArray[i][s] = coordsAry[n];
                n++;

              //  alert("i=" + i + " s=" + s + " Val: " + (myArray[i][s]));

            }
            // var u = 4;
            s = 0;

            alert(myArray[0][3]);
            alert(myArray[0][4]);

            alert("i=" + i + " s=" + s + " Val: " + (myArray[i][s]));              

        }
Run Code Online (Sandbox Code Playgroud)

coordsAry有105条记录并且是平的,{"12","Frank","564",......等已经证明了这一点.填充第二条记录后,我收到此错误....

Error: Unable to set value of the property '0': object is null or undefined.
Run Code Online (Sandbox Code Playgroud)

显然,我的javascript技能至少可以说有点粗糙.任何示例代码将不胜感激.

谢谢,

Mor*_*ler 17

您不要将数组调暗到实际大小,

您可以将任何索引上的变量设置为您想要的任何值

如果你想要两个Dimensions,你可以定义一个数组

var arr = []

将元素设置为另一个数组

arr[0] = []

并在"第二维"中的元素内放置一个值

arr[0][10] = 10

您只有"第一维"中的元素才是数组

您还可以执行将数组放入数组的操作

喜欢

var arr = []
var arr1 = [1,2,3]
arr[0] = arr1
console.log(arr[0][2]) //3
Run Code Online (Sandbox Code Playgroud)

如果你有一个数组并且想要在内部数组中推送元素,那么只需检查元素是否已定义,例如

var arr = []
for ( var i = 0; i < 5 ; i++) {
    if(!arr[i])
        arr[i] = []
    for ( var j = 0; j < 3 ; j++)
        arr[i][j] = i + " - " + j // Or like this,
        //arr[i].push(i + " " + j) // 
}
console.log( arr[2][3]) // 2 - 3
Run Code Online (Sandbox Code Playgroud)

根据您发布的代码

function newTest() {
    var myArray = [[],[]];
  //  myArray[] = new Array(14);

    var recCount = 15
    var n =0;

    var i = 0;
    var s = 0;

    for (i = 0; i < recCount; i++) {
        if(!myArray[i])
             myArray[i] = []
        for (s = 0; s < 15; s++) {
            console.log(i)

          //  myArray[i] = new Array(14);

            myArray[i][s] = s;
            n++;

          //  alert("i=" + i + " s=" + s + " Val: " + (myArray[i][s]));

        }
        // var u = 4;
        s = 0;

        alert(myArray[0][3]);
        alert(myArray[0][4]);

        alert("i=" + i + " s=" + s + " Val: " + (myArray[i][s]));              

    }
}
newTest()
Run Code Online (Sandbox Code Playgroud)

这适合我