JS多维数组有没有固定的大小

问题描述:

在我的节目,我有:JS多维数组有没有固定的大小

数组CURRENTINDEX,将看起来像[1,2,2] 多维数组的方向,看起来像[1,[2,0 ,[2,3, - ]] 1]

我怎样才能循环第一个以这样的方式,我可以访问方向[1] [2] [2](转第一个数组的索引第二) ?

+0

您必须更具体。我看到'-'的位置,但不知道你在看什么。如果你想通过'方向[1] [2]'循环,你可以将它分配给一个变量并循环,因为它是一个数组。 – PHPglue

要直接访问一个值,您可以使用vector[1][2],但请记住数组索引以0开头。

但是,如果你想通过你需要一个递归函数的向量走路:

function printRecursiveArray(value, c){ 
    for(c=0; c<value.length; c++){ 

    if (typeof value[c] !=='object'){ 
     console.log(value[c]);  
    }else{ 
     printRecursiveArray(value[c],0); 

    } 

    } 
} 
var vector = [1,[1,2,3],2,3]; 
printRecursiveArray(vector,0); 
console.log('vector[1][2]:' + vector[1][2]);// To access directly 

所以,你的阵列可以有任何尺寸,但你还是打印的元素。

如果你要循环多维数组则该过程可以是这样的:

for(var i in directions){ 
    for(var n in direction[i]){ 
    for(var q in directions[i][n]){ 
     var innerIncrement = q, innerValue = directions[i][n][q]; 
    } 
    } 
} 

要考虑到一个在循环会自动让你的索引字符串。下面是一个无法证明的方式做同样的事情,与其他一些帮助:

for(var i=0,l=directions.length; i<l; i++){ 
    var d = directions[i]; 
    for(var n=0,c=d.length; n<c; n++){ 
    var d1 = d[n]; 
    for(var q=0,p=d1.length; q<p; q++){ 
     var innerIncrement = q, innerValue = d1[q]; 
    } 
    } 
} 

当你像上述任何的循环,假设每个内循环运行完整的圆,前外环增加其增量,然后再次运行整圈。你真的必须知道你的目标是实现这些循环。

根据我的理解,你想迭代通过第一个数组,其中第一个数组中的每个值都是要在多维数组中访问的索引。下面的递归函数应该可以工作:

//index: Array of indexes 
//arr: The mutlidimensional array 
function accessMutliArr (index, arr) { 
    if (index.length === 1) 
     return arr [ index ]; 
    else { 
     var currentIndex = index.splice(0, 1); 
     return accessMutliArr (index , arr [ currentIndex ]); 
    } 
}