없이 내부 객체를 무시 I 나는 새로운 객체 병합 원하는 두 개체가 첫 번째 개체가 구글 차트의 기본 옵션입니다 있습니다병합 개체는 병합
optionsA = {
height: 500,
focusTarget: 'category',
hAxis: {
showTextEvery: 0,
slantedText: true,
slantedTextAngle: 45,
format: 'date',
},
}
으로 내 두 번째 객체 hAxis
에 몇 가지 속성을 추가하고 현재 값을 새 값으로 대체하려고합니다. 그러나 기본적으로이 옵션을 optionsA
에 유지하려고합니다.
이 내 두 번째 객체입니다
optionsA = {
isStacked: true,
hAxis: {
gridlines: {
count: 10
},
format: 'percent',
},
}
이러한 개체
가 더 복잡하지만 합병을 시도 object.assign 결과가 있다는 것입니다 때 나는 질문을 단순화하기 위해 속성을 감소 개체 B는 새 개체에 새 루트 속성을 추가하지만 hAxis
의 속성은 optionsB
의 옵션으로 완전히 재정의됩니다. , hAxis에서
{
height: 500,
focusTarget: 'category',
isStacked: true,
hAxis: {
gridlines: {
count: 10
},
format: 'percent',
},
}
속성은 완전히 새로운 속성 오버라이드 (override)됩니다
{
height: 500,
focusTarget: 'category',
isStacked: true,
hAxis: {
gridlines: {
count: 10
},
format: 'percent',
showTextEvery: 0,
slantedText: true,
slantedTextAngle: 45,
},
}
대신이의 나는이 무엇입니까 :
let newObj = Object.assign({}, optionsA, optionsB);
이 내가 예상 할 개체입니다 내 문제는 뭐니?
'Object.assign()'은 소스 객체의 최상위 속성에서만 작동합니다. 하위 오브젝트로 "내려 앉지"않습니다. – Pointy
참조 : http://stackoverflow.com/questions/27936772/how-to-deep-merge-instead-of-shallow-merge –
'Object.assign ({}, optionsA, optionsB, {hAxis : Object. assign ({}, optionsA.hAxis, optionsB).hAxis)})'해야한다 – Bergi