Array.from 과 new Array로 만들어진 배열

limuubin·2022년 3월 9일
0
let a = Array.from(Array(5), () => new Array(5).fill(null));

let b = new Array(5).fill(new Array(5).fill(null));

console.log(a)⬇️

[
  [ null, null, null, null, null ],
  [ null, null, null, null, null ],
  [ null, null, null, null, null ],
  [ null, null, null, null, null ],
  [ null, null, null, null, null ]
]

console.log(b)⬇️

[
  [ null, null, null, null, null ],
  [ null, null, null, null, null ],
  [ null, null, null, null, null ],
  [ null, null, null, null, null ],
  [ null, null, null, null, null ]
]

위와 같이 두개의 값이 동일한데... 똑같은 연산을 적용시키면 결과가 다르게 나온다... 왜 .. ?

let arr = [[0, 0, 0, 0, 0], [0, 0, 1, 0, 3], [0, 2, 5, 0, 1], [4, 2, 4, 4, 2], [3, 5, 1, 3, 1]]



//1
for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length; j++) {
        a[j][5 - 1 - i] = arr[i][j]

    }
}



//2
for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr.length; j++) {
        b[j][5 - 1 - i] = arr[i][j]

    }
}

위처럼 2차원 배열의 요소에 도다른 2차원 배열의 요소를 대입했다.
그런데 나오는 결과는 완전히 다르다.

결과

//console.log(a)
[
  [ 3, 4, 0, 0, 0 ],
  [ 5, 2, 2, 0, 0 ],
  [ 1, 4, 5, 1, 0 ],
  [ 3, 4, 0, 0, 0 ],
  [ 1, 2, 1, 3, 0 ]
]

//console.log(b)
[
  [ 1, 2, 1, 3, 0 ],
  [ 1, 2, 1, 3, 0 ],
  [ 1, 2, 1, 3, 0 ],
  [ 1, 2, 1, 3, 0 ],
  [ 1, 2, 1, 3, 0 ]
]


왜 이렇게 나오는거지,, JS에 진정한 2차원배열은 없다고는 하지만, 특
만들어지는 방법에 따라, 결과도 다르게 나오다니,, 공부가 필요하다고 생각된다..

0개의 댓글