Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建并循环通过一个不';在JavaScript中不能从零开始?_Javascript - Fatal编程技术网

创建并循环通过一个不';在JavaScript中不能从零开始?

创建并循环通过一个不';在JavaScript中不能从零开始?,javascript,Javascript,我尝试创建一个二维数组,其中填充的对象如下: Array[5][1] = Objekt //start from 5 & 1 instead of 0 & 0 Array[6][1] = Objekt Array[7][1] = Objekt Array[9][1] = Objekt //skipped 8 Array[10][1] = Objekt Array[2][2] = Objekt Array[3][2] = Objekt Array

我尝试创建一个二维数组,其中填充的对象如下:

Array[5][1] = Objekt //start from 5 & 1 instead of 0 & 0 
Array[6][1] = Objekt    
Array[7][1] = Objekt    
Array[9][1] = Objekt //skipped 8   
Array[10][1] = Objekt 

Array[2][2] = Objekt  
Array[3][2] = Objekt  
Array[4][2] = Objekt  
Array[6][2] = Objekt //skipped 5
Array[7][2] = Objekt

Array[3][3] = Objekt
Array[4][3] = Objekt
Array[5][3] = Objekt
Array[6][3] = Objekt
Array[8][3] = Objekt //skipped 7
我的问题是:我不能从零开始,所以我不能使用push函数。那是因为它是一个网格。第一个索引是X,第二个索引是栅格立方体的Y位置。(3.js)

这就是目标:

var grid =
[   
    //line 1
    {x:5,z:1},
    {x:6,z:1},
    {x:7,z:1},
    {x:9,z:1},
    {x:10,z:1},

    //line 2
    {x:2,z:2},
    {x:3,z:2},
    {x:4,z:2},
    {x:6,z:2},
    {x:7,z:2},

    //line 3
    {x:3,z:3},
    {x:4,z:3},
    {x:5,z:3},
    {x:6,z:3},
    {x:8,z:3},

    //..
};

但是我如何才能创建一个像上面的示例那样的数组,而不是像arr[0][0]、arr[0][1]、arr[0][2]、arr[1][0]、arr[1][1]、?有可能吗

由于对象包含要在数组中定位它们的信息,因此可以通过一个简单的循环来实现这一点:

var newArray = [];

grid.forEach(function(obj) {
    if (!newArray[obj.x]) {
        newArray[obj.x] = [];
    }
    newArray[obj.x][obj.z] = obj;
});
迭代所有对象也很容易<代码>forEach跳过孔:

newArray.forEach(function(innerArray) {
    innerArray.forEach(function(obj) {
        console.log(obj);
    });
});

是的,这是可能的。有什么问题吗?@pm77-1:问题是我不知道如何创建这样的数组。你需要通过显式指定索引值来完成。就像你的第一个例子。@pm77-1:你的意思是像:arr=[];arr[5]=[];arr[5][1]=新对象();arr[5][2]=新对象();等等,每一个?很好。谢谢你,我不知道!arr[index]的工作原理类似于typeof(arr[index])!='“未定义”。你帮了我很多忙,谢谢。好吧,从技术上讲
!newArray[obj.x]
只需将
newArray[obj.x]
的值转换为布尔值并取反。例如,
!0
也是
true
。但是,由于您的数组在该位置是
未定义的
,或者是一个数组,因此在此处使用此检查是安全的。