0
JavaScript로 2 차원 배열을 만들고 싶지만 몇 가지 문제가 있습니다.배열 채우기가 제대로 작동하지 않습니다.
정의 된 크기의 2 차원 배열을 만드는 두 함수가 같은 방식으로 작동하지 않는 이유를 이해할 수 없습니다. 전용 "거짓"으로 우리가 볼 수 있듯이
[ [ false, false, false ],
[ false, false, false ],
[ false, false, false ] ] // array OK
[ [ false, false, false ],
[ false, false, false ],
[ false, false, false ] ] // arrayFill OK
[ [ false, false, false ],
[ false, true, false ],
[ false, false, false ] ] // array OK
[ [ false, true, false ],
[ false, true, false ],
[ false, true, false ] ] // arrayFill FAIL
, 두 배열이 잘 가득 : 여기
function createArray(size) {
const arr = new Array(size);
for (let i = 0; i < size; ++i) {
arr[i] = new Array(size).fill(false);
}
return arr;
}
function createArrayFill(size) {
return new Array(size).fill(new Array(size).fill(false));
}
const array = createArray(3);
const arrayFill = createArrayFill(3);
console.log(array);
console.log(arrayFill);
array[1][1] = true;
arrayFill[1][1] = true;
console.log(array);
console.log(arrayFill);
이 출력됩니다.
두 배열 모두 [1] [1]을 "true"로 두지 만 두 번째 배열에서는 두 번째 열의 모든 셀을 "true"로 설정합니다.
이유를 알고 계십니까?
두 console.log가 동일한 배열을 표시하지만 동일한 코드가 동일한 결과를 내지 않는 이유를 이해할 수 없습니다.
번째 경우
감사합니다. 이상하게도'console.log'는 같은 배열을 보여줍니다. – lludol
@lludol - 그것에 대해 이상한 점이 있습니까? 두 번째 경우에 동일한 배열 객체가 외부 배열의 각 위치에 있기 때문에'console.log'는 외부 배열을 반복 할 때마다 동일한 배열을 반복해서 표시합니다. –