JS에서 2D 정수 배열을 만드는 방법은 무엇입니까?
let dp = [...Array(n+1)].map(e => Array(m+1).fill(0))
잠깐 기다려요? 물어보면 더 자세한 설명을 해주세요.
나는 사용했다.
let dp = new Array(1001)
아래 코드도 작동한다고 가정했습니다.
let dp = new Array(1001).fill(new Array(1001).fill(0))
하지만 시도했을 때 코드에서 예기치 않은 문제가 발생했습니다.
그래서 스프레드 연산자를 사용해 보았습니다.
그러나 여전히 문제가 해결되지 않았습니다. 내 코드가 예상대로 작동하지 않습니다.
백그라운드에서 무슨 일이 일어나고 있습니까?
이를 이해하려면
Array.prototype.fill
에서 발생하는 상황과 작동 방식을 이해해야 합니다.Fill은 Array의 프로토타입입니다.
fill() 메서드는 배열의 모든 요소를 시작 인덱스(기본값 0)에서 끝 인덱스(기본값 array.length)까지 정적 값으로 변경합니다. 수정된 배열을 반환합니다.
여기서 말하지 않는 것은?
첫 번째 매개변수가 객체인 경우 배열의 각 슬롯은 해당 객체를 참조합니다.
그것이 도움이 된다고 생각한다면, 그러나 다른 것에 대해서는 동일한 참조를 가지고 있기 때문입니다.
// A single object, referenced by each slot of the array:
const arr = Array(3).fill({}); // [{}, {}, {}]
arr[0].hi = "hi"; // [{ hi: "hi" }, { hi: "hi" }, { hi: "hi" }]
그래서 2D 배열을 만들 때 채우기를 사용할 수 없었습니다. 하지만 언젠가는 훨씬 효율적으로 2D 어레이를 생성하기 위한 새로운 프로토타입을 갖게 될 것이라고 말하고 싶습니다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
Note:
For that matter, always be cautious sometimes. It's not about how you write the code. It's also about how the prototypes is written using any standard prototype.
So whenever you use any prototype, you must know about them again and not take them for granted.
Reference
이 문제에 관하여(JS에서 2D 정수 배열을 만드는 방법은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/iraycd/how-to-create-a-2d-array-on-integers-in-js-14md텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)