다른 배열에 객체 배열을 지정하려고했지만 새 배열을 만들 때 다른 값을 변경하면 원래 배열이 변경됩니다. not ok). 다른 방법을 사용할 수 있습니까? 다음은 예제입니다. http : //codepen.io/Xiwi/pen/rLMbYp새 배열에 객체 내용 배열 할당
2
A
답변
3
참조로 변경되지 않도록 배열을 복사/복제해야합니다.
만 Primitive Types이 같이 할 수있는 배열에있는 경우 :
var test3 = JSON.parse(JSON.stringify(test2));
그렇지 않으면 재귀 솔루션 및 귀하의 질문에 구체적으로 필요합니다.
예 :
var test1 = [{name: 'test1'}];
var test2 = [{name: 'test2'}];
var test3 = JSON.parse(JSON.stringify(test2));
test3[0].name = 'test3';
// Open console
console.log('Test2: ',test2[0]); // Object {name: "test2"}
console.log('Test3: ',test3[0]); // Object {name: "test3"}
0
객체가 기본적으로 참조입니다. 당신은 새로운 객체를 생성하고 다른 개체의 값을 할당해야합니다
var test3 = [ Object.assign({}, test2[0]) ];
0
를 사용하여 간단한 .map
다른 개체 중 하나 개 배열을 복사합니다. 내가 믿는 당신이 직렬화 필요가 없습니다
var test1 = [{name: 'test1'}];
var test2 = [{name: 'test2'}];
//var test3 = test2.slice(0); //doesn't work. objects are still references
var test3 = test2.map(function(obj){
//return obj; //doesn't work. objects are still references
var o={}; //create brand new object
for(var prop in obj)
o[prop]=obj[prop];//assign properties
return o;//works
});
test3[0].name = 'test3';
// Open console
console.log('Test2: ',test2[0]);
console.log('Test3: ',test3[0]);
관련 문제
- 1. 배열 객체에서 객체 할당
- 2. 배열에 객체 할당
- 3. 할당 새 배열 키
- 4. 배열에 포인터 배열 할당
- 5. 배열 배열에 객체 저장
- 6. 배열 배열에 객체 추가
- 7. 배열 배열에 객체 추가
- 8. 객체 배열에 대한 메모리 할당
- 9. 객체 배열에 새 객체 추가 javascript
- 10. 스택 배열에 malloc'ed 배열 할당
- 11. 가변 배열에 캐스팅 객체 배열
- 12. 각도 배열에 객체 배열 전달하기
- 13. 가변 수량의 새 객체 할당
- 14. 새 배열에 JS 배열 전달
- 15. 복사 객체로 새 객체에 자바 객체 할당
- 16. foreach 루프에 새 배열 할당
- 17. actionscript3의 객체 배열에 고유 식별자 할당
- 18. 객체 배열에 할당 할 수 없습니다. javascript
- 19. 간단한 배열을 객체 배열에 할당 하시겠습니까?
- 20. 배열 2D를 Ember.View의 내용 배열에 추가하십시오.
- 21. 동적 배열에 해당하는 내용
- 22. 구조체의 문자 배열에 문자 배열 할당
- 23. 다른 배열에 할당 된 동적 배열
- 24. 정적 배열에 구조체 할당
- 25. PHP로 배열에 새 JSON 객체 추가
- 26. 배열에 int 번호 할당
- 27. 전체 배열에 액세스하는 배열 객체 사전
- 28. MongoDB 배열 배열에 특정 객체 가져 오기
- 29. 다른 배열에 배열 및 객체 저장
- 30. 다른 객체 그룹 내의 배열에 액세스하고 배열
'[] .splice (0,0, 편곡) '프리미티브 – kirinthos
죄송합니다'[] .concat (편곡)' – kirinthos
@kirinthos의 사본을 할 것입니다 아니. 당신도 똑같은 문제를 겪을 것입니다. 여기를 확인하십시오 : https://jsfiddle.net/jbL0vm9m/ – Sergio