2016-07-12 6 views
-2

나는 모두를 CONCAT 싶은이 결과 일반 자바 스크립트에서이 작업을 수행하는 가장 간단한 방법이 무엇인지어떻게 두 개의 JavaScript 객체를 병합 할 수 있습니까?

result = {"aa" : "foo" , "b" :"bar"} 

을 얻으려면 두 개의 자바 스크립트

a = {"aa" : "foo"} 
b = {"b" : "bar"} 

개체를 가지고있다. jquery 또는 밑줄과 같은 외부 라이브러리를 사용하지 않습니다.

+1

"json 개체"와 같은 것은 없습니다. – gcampbell

+0

다음을 확인하십시오. https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign – C2486

+1

질문하기 전에 검색하십시오. 이전에 질문되었습니다. – gcampbell

답변

3

Object.assign을 사용하십시오. 여기서는 documentation입니다.

var mergedObject = Object.assign(a, b); 

는 매개 변수 목록에서 나중에 추가 한 경우 동일 오버라이드 (override) 할 것입니다 바로 그래서 어떤 키 왼쪽에서 Object.assign 병합된다는 점에 유의해야합니다. 사용, 이전의 두 답변에서 제안대로 MDN documentation은 ES5의 polyfill을 제공하지만 브라우저 지원은, 달리 지시하지 않는 한

+0

이것은'a'를 바꿀 것입니다. – str

+0

'Object.assign ({}, a, b)'는 원래 객체를 변경하고 싶지 않은 경우 어떻게해야 하는지를 설명합니다. –

+0

IE가 지원하지 않음 – Eloims

2
var o1 = {"aa" : "foo" }; 
var o2 = { "b" : "bar" }; 

var obj = Object.assign(o1, o2); 
2

이상적으로, Object.assign는 당신의 최선의 방법이다.

if (typeof Object.assign != 'function') { 
    Object.assign = function(target) { 
    'use strict'; 
    if (target == null) { 
     throw new TypeError('Cannot convert undefined or null to object'); 
    } 

    target = Object(target); 
    for (var index = 1; index < arguments.length; index++) { 
     var source = arguments[index]; 
     if (source != null) { 
     for (var key in source) { 
      if (Object.prototype.hasOwnProperty.call(source, key)) { 
      target[key] = source[key]; 
      } 
     } 
     } 
    } 
    return target; 
    }; 
} 
+1

태그가 자바 스크립트가 아닙니다. Jquery –

+0

업데이트 된 자바 스크립트 @ gayathri를 확인할 수 있습니다. –

관련 문제