본문 바로가기

프로그램 강좌

[javascript]배열 복사 영향 안받게하려면? array.slice();

배열을 선언하고 복사를 하고 나면 우리가 생각하는대로 원본은 그대로 있어야 하는데 원본도 같이 바뀝니다.
예제를 보시면 이해가 빠를거예요.

let a = [2,3,1];
let a1 = a.sort((a,b)=>a-b)

console.log(a1);
console.log(a); //문제

a를 출력해보면 우리가 처음 봤던 a와는 다르게 a1이랑 같은 결과가 나옵니다.
기본적으로 배열은 원본을 참조하도록 설정 되어 있습니다.

이 연결을 끊어주려면 이렇게 해주면 됩니다.

let a = [2,3,1];
let a1 = a.slice();
a1 = a1.sort((a,b)=>a-b)

console.log(a1); //[1,2,3]
console.log(a); // [2,3,1]

이제 서로 영향을 받지 않습니다.

728x90