在我的節目,我有:JS多維數組有沒有固定的大小
數組CURRENTINDEX,將看起來像[1,2,2] 多維數組的方向,看起來像[1,[2,0 ,[2,3, - ]] 1]
我怎樣才能循環第一個以這樣的方式,我可以訪問方向[1] [2] [2](轉第一個數組的索引第二) ?
在我的節目,我有:JS多維數組有沒有固定的大小
數組CURRENTINDEX,將看起來像[1,2,2] 多維數組的方向,看起來像[1,[2,0 ,[2,3, - ]] 1]
我怎樣才能循環第一個以這樣的方式,我可以訪問方向[1] [2] [2](轉第一個數組的索引第二) ?
要直接訪問一個值,您可以使用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 ]);
}
}
您必須更具體。我看到'-'的位置,但不知道你在看什麼。如果你想通過'方向[1] [2]'循環,你可以將它分配給一個變量並循環,因爲它是一個數組。 – PHPglue