如何使用JavaScript连接两个JavaScript对象

如何使用JavaScript连接两个JavaScript对象,javascript,javascript-objects,Javascript,Javascript Objects,我有两个JavaScript对象,其结构如下 var obj1 = {id1: 10, name1: "stack"}; var obj2 = {id2: 20, name2: "overflow"}; 我想使用Javascript将它们合并为一个单个对象(而不是数组) 结果应该是这样的 var res = {id: 10, name1: "stack", id2: 20, name2: "overflow"}; 有没有一种简单的方法可以使用纯javascript实现这一点 注意:我不需

我有两个JavaScript对象,其结构如下

var obj1  = {id1: 10, name1: "stack"};
var obj2  = {id2: 20, name2: "overflow"};
我想使用Javascript将它们合并为一个单个对象(而不是数组)

结果应该是这样的

var res = {id: 10, name1: "stack", id2: 20, name2: "overflow"};
有没有一种简单的方法可以使用纯javascript实现这一点

注意:我不需要jQuery来完成这项工作,我希望concat是用于json对象的,而不是作为json数组使用
concat
方法。有什么简单的方法或方法可以实现这一点吗?

使用

:

if(type of Object.assign!=“function”){
(功能(){
Object.assign=函数(目标){
"严格使用",;
如果(目标==未定义| |目标===空){
抛出新的TypeError('无法将未定义或null转换为对象');
}
var输出=对象(目标);
for(var index=1;index
使用

:

if(type of Object.assign!=“function”){
(功能(){
Object.assign=函数(目标){
"严格使用",;
如果(目标==未定义| |目标===空){
抛出新的TypeError('无法将未定义或null转换为对象');
}
var输出=对象(目标);
for(var index=1;index
一个简单的简单解决方案:

函数addToObject(源、目标){
Object.keys(源).forEach(函数(k){
目标[k]=源[k];
});
}
var obj1={id1:10,name1:“stack”},
obj2={id2:20,名称2:“溢出”},
结果={};
addToObject(对象J1,结果);
addToObject(对象J2,结果);

document.write(“”+JSON.stringify(结果,0,4)+“”)一个简单的简单解决方案:

函数addToObject(源、目标){
Object.keys(源).forEach(函数(k){
目标[k]=源[k];
});
}
var obj1={id1:10,name1:“stack”},
obj2={id2:20,名称2:“溢出”},
结果={};
addToObject(对象J1,结果);
addToObject(对象J2,结果);

document.write(“”+JSON.stringify(结果,0,4)+“”)在ES6中,您可以使用
对象。分配
。例如:
Object.assign({},obj1,obj2)
Language,这些实际上是对象文本。是的,它们可以是JSON,但关键的区别是JSON键必须是字符串。换句话说,这个问题中没有JSON。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么就不是JSON。在ES6中,您可以使用
Object.assign
。例如:
Object.assign({},obj1,obj2)
Language,这些实际上是对象文本。是的,它们可以是JSON,但关键的区别是JSON键必须是字符串。换句话说,这个问题中没有JSON。JSON是用于数据交换的文本表示法。如果您处理的是JavaScript源代码,而不是字符串,那么就不是JSON。谢谢!使用var result=Object.assign({},obj1,obj2)有什么区别;var结果=Object.assign(obj1,obj2);两者的结果相同right@UI_Dev:正如他在回答中的评论所说:后者改变了obj1
。前者没有。评论应该是清楚的?我不明白你的意思。Crowder@UI_Dev
Object.assign
的第一个参数将被修改并返回。谢谢!使用var result=Object.assign({},obj1,obj2)有什么区别;var结果=Object.assign(obj1,obj2);两者的结果相同right@UI_Dev:正如他在回答中的评论所说:后者改变了obj1
。前者没有。评论应该是清楚的?我不明白你的意思。Crowder@UI_Dev
Object.assign
的第一个参数将被修改并返回。
var obj1 = {a: 1}, obj2 = {b:2}
// Using three arguments so that obj 1 and 2 aren't modified
var result = Object.assign({}, obj1, obj2);
// result.a -> 1
// result.b -> 2
// obj1.b -> undefined
// obj2.a -> undefined

// You could modify obj1
Object.assign(obj1, obj2);
// obj1.b -> 2
if (typeof Object.assign != 'function') {
  (function () {
    Object.assign = function (target) {
      'use strict';
      if (target === undefined || target === null) {
        throw new TypeError('Cannot convert undefined or null to object');
      }

      var output = Object(target);
      for (var index = 1; index < arguments.length; index++) {
        var source = arguments[index];
        if (source !== undefined && source !== null) {
          for (var nextKey in source) {
            if (source.hasOwnProperty(nextKey)) {
              output[nextKey] = source[nextKey];
            }
          }
        }
      }
      return output;
    };
  })();
}