반응형
개체를 병합하는 방법
예를 들어, 다음 2개의 오브젝트 중 하나입니다.
var object1 = {
"color": "yellow",
"size": null,
"age": 7,
"weight": null
}
var object2 = {
"color": "blue",
"size": 51,
"age": null
}
이거 갖고 싶다(object2오버라이드object1을 제외하고null소유하지 않은 속성:
{
"color": "blue",
"size": 51,
"age": 7,
"weight": null
}
var src = { name: 'Apple', price: 5};
var dst= angular.copy(src);
- 딥 카피
확장:
var mergedObject = angular.extend(dst, src1, src2, ...)
- 얕은 복사
병합:
var mergedObject = angular.merge(dst, src);
- 각도가 1.4 이상이기 때문에
- 깊이 있는 (비교적으로) 복사
null로 덮어쓰지 않으려면 이 옵션을 사용할 수 있습니다.
let movie2 = Object.assign({}, movie1, { episode: 8 });
- fot Angular 2+(ECMAScript 6)
출처:
의 최신 버전(최소 1.4.0)의 경우 다음을 사용할 수 있습니다.
extend()와 달리 merge()는 소스 객체의 오브젝트 속성으로 재귀적으로 하강하여 딥 복사를 수행합니다.
angualr.extend를 사용하면 요청된 결과가 생성되지 않습니다.object2.age null 값은 object1.age 값을 덮어씁니다.
각진extend(object1, object2)는 다음 결과를 생성합니다.
{
"color" : "blue",
"size" : 51,
"age" : null, <=== undesirable result
"weight" : null
}
다음 코드를 사용하여 null 속성을 건너뜁니다.
for (var prop in object1) {
if(object1.hasOwnProperty(prop) && object2.hasOwnProperty(prop) && object2[prop]!=null) {
object1[prop] = object2[prop];
}
}
이렇게 하면 다음과 같은 요청 결과가 생성됩니다.
{
"color" : "blue",
"size" : 51,
"age" : 7,
"weight" : null
}
언급URL : https://stackoverflow.com/questions/28473574/how-to-merge-objects
반응형
'programing' 카테고리의 다른 글
| Json null 대신 빈 문자열을 변환합니다. (0) | 2023.02.08 |
|---|---|
| angularjs의 여러 js 파일에서 단일 컨트롤러를 분할하는 방법 (0) | 2023.02.08 |
| ng-show="true"이지만 아직 class="ng-hide"가 있습니다. (0) | 2023.02.08 |
| Jackson이 값을 문자열로 읽음 (0) | 2023.02.08 |
| Swift 3.0: 데이터를 JSON으로 [String : Any] (0) | 2023.02.08 |