나는 2 차원 배열을 채우려는, 나는 자바 스크립트 코드가 있습니다왜 자바 스크립트에서 2D 배열 채우기가 실패합니까?
n=2; //rows
m=3; //columns
z=0;
array1=[];
for(i=0;i<n;i++){
for(j=0;j<m;j++){
array1[i]=[];
array1[i][j] = z;
console.log(i+","+j+"="+z); //debug
z++;
}
}
console.log(array1);
하지만 그 대신이 예상 결과를 얻는을;
[[0, 1, 2], [3, 4, 5]]
내가 얻을 :
[[undefined, undefined, 2], [undefined, undefined, 5]]
왜!?이 올바른지 (여기서는 2와 5) 올바른 것을 제외하고 각 "내부"배열의 모든 항목에 대해 이 정의되지 않은 이유를 이해할 수 없습니다.
나는 각i,j
쌍 할당 된
z
값을 기록 디버그 단계를했고, 내가 올바른 쌍-값마다
(i,j=z)
받을 수 있나요 : 그래서
0,0=0
0,1=1
0,2=2
1,0=3
1,1=4
1,2=5
, 내가 올바르게 사용하여 배열을 작성하고 생각을 arr[i][j]=z
때마다, 그렇다면 왜 그런 경우에 대해 정의되지 않은 상태가됩니까? 두 경우 모두 arr=[]
구문 대신 arr=new Array()
을 사용했지만 동일한 결과가 나타났습니다.
아이디어가 있으십니까? 나는 그것이 사소한 오류가 될 것이라고 거의 확신하지만, 나는 틀린 것을 발견 할 수 없다!.
감사합니다.
당신은 행, 행, 열, 열 및 카운터와 같은 의미있는 변수 이름을 사용하는 경우, 당신은 아마 더 빨리 오류를 발견 것; i, n, j, m 및 z 대신. –
@PatrickMcElhaney 이것은 훌륭한 제안입니다 – Interrobang