새 스프레드 연산자로 배열이있는 객체를 복제하는 방법은 무엇입니까?스프레드 연산자를 사용하여 배열로 객체 복제
예 개체 :
vehicles: {
cars: [1, 2],
boats: [3, 4]
}
나는 그 안에 배열을 가진 새로운 개체를 원한다. 이 새로운 객체에서 나는 차량 객체를 참조하고 영향을 미치지 않고 배열을 변경하거나 추가 할 수 있기를 원합니다.
새 스프레드 연산자로 배열이있는 객체를 복제하는 방법은 무엇입니까?스프레드 연산자를 사용하여 배열로 객체 복제
예 개체 :
vehicles: {
cars: [1, 2],
boats: [3, 4]
}
나는 그 안에 배열을 가진 새로운 개체를 원한다. 이 새로운 객체에서 나는 차량 객체를 참조하고 영향을 미치지 않고 배열을 변경하거나 추가 할 수 있기를 원합니다.
Object.assign 및 스프레드 연산자는 참조 된 것보다 얕은 한 수준의 얕은 클론을 만듭니다. 내가 발견 한 가장 좋은 방법은 (감사합니다 MDN) JSON 함수를 사용하여 진정한 복제물을 만드는 것입니다.
let vehicles = {
cars: [1, 2],
boats: [3, 4],
};
let test = JSON.parse(JSON.stringify(vehicles));
console.log(vehicles, test);
test.cars[0] = 5;
vehicles.cars[0] = 7;
console.log(vehicles, test);
훌륭한 솔루션! – Euroclydon37
대형 물체가 있으면 어떨까요? 그 상황에서 처리 할 수 있습니까? – Sumit
큰 단일 레벨 개체가있는 경우 Object.assign을 사용하는 것이 좋습니다 (개인적 의견). 내가 할 일을 할 때 기본 제공 언어 함수를 사용하는 것이 더 좋습니다. 큰 다단계 객체의 경우이 메서드는 정상적으로 작동합니다. –
당신은 당신의 새로운 객체의 내용을 지정할 수 있습니까? – void
확산 연산자는 얕은 사본을 만들어 모든 심층 개체가 여전히 불행히도 참조됩니다. –