programing

개체를 병합하는 방법

sourcejob 2023. 2. 8. 17:52
반응형

개체를 병합하는 방법

예를 들어, 다음 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로 덮어쓰지 않으려면 이 옵션을 사용할 수 있습니다.


오브젝트.assign():

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

반응형