developer tip

ES6로 두 개체 병합

copycodes 2020. 10. 7. 07:47
반응형

ES6로 두 개체 병합 [중복]


이 질문에 이미 답변이 있습니다.

이 질문이 이전에 요청되었다고 확신하지만 내가 찾고있는 답을 찾을 수 없으므로 여기에 있습니다.

다음과 같이 두 개의 개체가 있습니다.

const response = {
  lat: -51.3303,
  lng: 0.39440
}

let item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK'
}

이것을 형성하려면 이들을 병합해야합니다.

item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK',
  location: {
    lat: -51.3303,
    lng: 0.39440
  }
}

다음과 같이 할 수 있습니다.

item.location = {}
item.location.lat = response.lat
item.location.lng = response.lng

그러나 ES6가 멋진 구조화 / 할당을 도입했기 때문에 이것이 더 이상 최선의 방법이 아니라고 생각합니다. 깊은 객체 병합을 시도했지만 불행히도 지원되지 않습니다.

그렇다면 ES6를 사용하여이 두 개체를 병합하는 가장 좋은 방법은 무엇입니까?


를 사용 Object.assign()하여 새 개체로 병합 할 수 있습니다 .

const response = {
  lat: -51.3303,
  lng: 0.39440
}

const item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK'
}

const newItem = Object.assign({}, item, { location: response });

console.log(newItem );

ECMAScript에 대한 4 단계 제안 인 object spread를 사용할 수도 있습니다 .

const response = {
  lat: -51.3303,
  lng: 0.39440
}

const item = {
  id: 'qwenhee-9763ae-lenfya',
  address: '14-22 Elder St, London, E1 6BT, UK'
}

const newItem = { ...item, location: response }; // or { ...response } if you want to clone response as well

console.log(newItem );


또 다른 문제는 다음과 같습니다.

let result = { ...item, location : { ...response } }

그러나 개체 확산은 아직 표준화 되지 않았습니다 .

도움이 될 수도 있습니다 : https://stackoverflow.com/a/32926019/5341953

참고 URL : https://stackoverflow.com/questions/39121695/merge-two-objects-with-es6

반응형